我想检查文本文件的内容是否与另一个文本文件的内容相同,如果不是,则将其中一个写入另一个文件。我的代码如下:
<?php $file = "http://example.com/Song.txt";
$f = fopen($file, "r+");
$line = fgets($f, 1000);
$file1 = "http://example.com/Song1.txt";
$f1 = fopen($file1, "r+");
$line1 = fgets($f1, 1000);
if (!($line == $line1)) {
fwrite($f1,$line);
$line1 = $line;
};
print htmlentities($line1);
?>
正在打印该行,但内容未写入文件中。
关于可能出现什么问题的任何建议?
BTW:我正在使用000webhost。我认为这是网络托管服务,但我已经检查过,应该没有问题。我还在这里检查了fwrite
函数:http://php.net/manual/es/function.fwrite.php。
拜托,任何帮助都会非常苛刻。
答案 0 :(得分:1)
使用文件时,您需要使用PATHS而不是URLS
所以
$file = "http://example.com/Song.txt";
成为
$file = "/the/path/to/Song.txt";
下一步:
$file1 = '/absolute/path/to/my/first/file.txt';
$file2 = '/absolute/path/to/my/second/file.txt';
$fileContents1 = file_get_contents($file1);
$fileContents2 = file_get_contents($file2);
if (md5($fileContents1) != md5($fileContents2)) {
// put the contents of file1 in the file2
file_put_contents($file2, $fileContents1);
}
此外,您应检查您的文件是否可由网络服务器写入,即0666
权限。
答案 1 :(得分:1)
您正在执行的操作仅适用于最多1000个字节的文件。另外 - 您正在使用“http://”打开要写入的第二个文件,这意味着fopen在内部将使用HTTP URL包装器。默认情况下,它们是只读的。您应该使用其本地路径fopen第二个文件。或者,为了使这更简单,你可以这样做:
$file1 = file_get_contents("/path/to/file1");
$path2 = "/path/to/file2";
$file2 = file_get_contents($path2);
if ($file1 !== $file2)
file_put_contents($path2, $file1);