file_put_contents和file_get_contents不能用于其他目录

时间:2011-04-26 06:38:35

标签: php file-io

尽管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之前我感到很难过......

1 个答案:

答案 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

希望有所帮助;)