尽管file_put_contents和file_get_contents适用于/var/www/html/
,但它们不适用于具有相同所有者(apache)和chmod(644)的任何其他目录。可能是什么原因?谢谢你的帮助...
编辑:
工作代码:
$contents = file_get_contents("/var/www/html/osman");
$contents = str_replace("mehmet", '', $contents);
file_put_contents("/var/www/html/osman", $contents);
没有正常工作的代码:
$contents = file_get_contents("/opt/blaris/etc/webfilter/lists/osman");
$contents = str_replace("mehmet", '', $contents);
file_put_contents("/opt/blaris/etc/webfilter/lists/osman", $contents);
并且在两个文件拥有相同的所有者和chmod之前我感到很难过......
答案 0 :(得分:1)
易卜拉欣
正如你所提到的,函数(get和put)都返回false。我很确定这是由不正确的设置文件/目录权限引起的(前段时间有同样的问题......)。
我通过检查路径(在您的情况下为“/ opt / blaris / etc / webfilter / lists /”)解决了它,如果所有权限都设置为应该。这还包括列表目录本身和上面所有目录的读/写权限。
因此,请确保路径中的所有目录(至少)都可由apache用户执行(例如,
/ opt是否可以为apache用户执行?
/ opt / blaris是否可执行...
是/ opt / blaris / etc可执行文件...
)
还要确保PHP脚本真正在apache用户下运行(<?php echo shell_exec('whoami'); ?>
应该为您提供信息)
如果要在shell级别调试它,可以尝试以下命令并查看输出内容(如果您有权在服务器上执行命令...):
sudo -u apache touch /opt/blaris/etc/webfilter/lists/osman
希望有所帮助;)