我正在使用我在这里找到的代码,效果很好,但是当我尝试访问子目录中的文件时,它就是不想工作。
它获取一个文件,创建一个要写入的临时文件,然后在文件中查找一些文本并用新文本替换该文本,然后保存更新的文件,然后删除临时文件。
以下工作正常:
$reading = fopen('links.htm', 'r');
$writing = fopen('links.tmp', 'w+');
$replaced = false;
while (!feof($reading)) {
$line = fgets($reading);
if (stristr($line,'::template::')) {
$line = "replacement line!\n";
$replaced = true;
}
fputs($writing, $line);
}
fclose($reading); fclose($writing);
// might as well not overwrite the file if we didn't replace anything
if ($replaced)
{
rename('links.tmp', 'links.htm');
} else {
unlink('links.tmp');
}
这不起作用:
$reading = fopen('path/to/links.htm', 'r');
$writing = fopen('path/to/links.tmp', 'w+');
$replaced = false;
while (!feof($reading)) {
$line = fgets($reading);
if (stristr($line,'::template::')) {
$line = "replacement line!\n";
$replaced = true;
}
fputs($writing, $line);
}
fclose($reading); fclose($writing);
// might as well not overwrite the file if we didn't replace anything
if ($replaced)
{
rename('path/to/links.tmp', 'path/to/links.htm');
} else {
unlink('path/to/links.tmp');
}
有什么建议么?
这path
是绝对的,我在之前的代码中定义了它并使用它来创建文件和写入文件,但是当我希望上面的代码以同样的方式工作时,它只是不想这样做。
此外,文件夹权限已设置为写入和读取,这也可以正常工作。
运行子文件夹中的代码并且可以正常工作,但不能从顶级目录运行。
错误报告已关闭,现在将其打开:
该进程无法访问该文件,因为它正被另一个进程使用。(代码:32)