我有一个 PHP 代码可以连接到 FTP 服务器,读取文件的内容,进行微小的更改,然后覆盖原始文件。
看起来像:
$stream_context = stream_context_create(array('ftp' => array('overwrite' => true)));
$file_content = file_get_contents($ftp_file); // this line works
$file_content = str_replace('some content', 'another content', $file_content); // this also..
file_put_contents($ftp_file, $file_content, 0, $stream_context); // this one doesn't :/
真正的问题是“file_put_contents”工作了很长时间,但现在没有了。它现在所做的很奇怪:它会从服务器中删除原始文件..另外,如果我将其更改为:
file_put_contents($new_ftp_file, $file_content);
据我所知,它应该创建新文件并将内容放入其中,但它根本不创建它。
我正在使用的托管服务几天前更改了 PHP 版本。我不记得以前的版本是什么,但现在是:5.2.17
谢谢!:)
一些变化
我找到了这篇文章:http : //www.php.net/manual/en/function.file-put-contents.php#86864 与“file_put_contents”相同,但使用 foen、fwrite 和 fclose(我发送他的示例是因为结果..)。如果它不能“fopen”文件,他的函数将返回“false”,如果成功则返回“bytes”。我得到了“假”:/这意味着它甚至无法做到:
@fopen($filename, 'w');
尽管具有相同文件地址的“file_get_contents”正在工作。
阅读正在工作(但如果您使用 $filename 并自己在客户端 FTP 上使用它 - 它可以工作):
@fopen($filename, 'r');
我的主机(执行操作)的“open base_dir”设置为 false,但目标主机(具有目标文件)设置为 true。
我有一个想法将新内容保存在一个新文件中,所以我尝试了类似的方法:
$f = @fopen($new_ftp_file, 'w'); //this one seems to work and connect
fwrite($f, $file_content); // this one seems to work either and returning the number of byes..
fclose($f);
问题是它们都没有真正起作用。我使用我的脚本使用的相同凭据登录到 FTP 地址,但我没有找到新文件。它根本不是创造出来的。(我提醒你,“$new_ftp_file”是一个不存在的文件的路径,所以“fopen”上的“w”模式应该创建它)。