在php中对777权限文件进行fopen时,权限被拒绝


3

我不是新的PHP或文件权限。但我只是将一个非常简单的脚本迁移到我设置的新服务器。

脚本运行的文件夹位于文档根目录中。该文件夹的权限设置为755。

该文件夹的所有者是gsta。该文件的所有者是gsta。

我打开了error_reporting并且得到了:

Warning: fopen(log.txt): failed to open stream: Permission denied in /var/www/html/log.php on line 13

我试过了:

chmod("log.txt", 0777)

在PHP中也获得权限被拒绝。

我弄完了:

ps -u | grep httpd

得到了:

gsta      1012  0.0  0.0 108608   808 pts/3    S+   22:45   0:00 grep --color=auto httpd

码:

$filename = 'log.txt';
$handle = fopen($filename,"a+");
echo "fh:" . fwrite($handle, $payload . "\n") . $handle . "<br/>";
fclose($handle);

即使PHP安全模式关闭也不重要

我尝试将文件的所有者设置为nobody(apache经常在没有人的情况下运行,我也尝试将所有者设置为apache。

我看过谷歌的每一个帖子,它总是基本的东西,所有这些都是我尝试过的。这是另一台服务器上的已知工作脚本。我试过检查php.ini寻找可能导致此问题的一些设置。我试过删除该文件(因为它应该在那种情况下创建它)

有没有人有任何想法?我尝试了所有我能想到的东西。


为apache写它需要有权限,或设置你想写的文件夹有777权限
Ibu

您是否尝试$ chmod 0777 log.txt过实际更改权限而不是使用chmod()

你不能有chmod任何不属于你的文件。或者,在这种情况下,这不是Web服务器用户(如果您通过PHP执行)。

Answers:


6

是否有可能像SELinux这样的安全措施阻止了这些行为?

我遇到了类似的问题和命令setenforce 0,它将关闭SELinux,成功解决了它。


1
谢谢你救了我更多的白发。(我正在使用RedHat,因为其他任何想要解决权限问题的人)
Mike

2

httpd或apache用户不同。用脚本检查apache用户名

<?php echo exec('whoami'); ?>

只有在不通过php.ini禁止该功能时才可以。
CSchulz 2011年

1

我不知道它可能是什么,但是你尝试在脚本中创建文件。只需重命名文件,确保fopen设置为读写模式(应该没问题)并让php为你创建它。

如果这不起作用,那么您的文件夹权限是错误的,请尝试将文件夹设置为777

因为某种原因,我也必须在我的盒子上使用两个零用于chmod,00777


我在Android上遇到了“fopen permissions denied”问题。chmod 0777 path/dir帮助。
18446744073709551615

1

“log.txt”你确定你设置为777的文件是同一个吗?没有它的路径,如果页面认为它的运行是从您的站点的根目录开始,而不是您所在的目录,则可能会出现错误,有些调用往往也需要该目录具有写入权限 - 我不认为我曾经深入到为什么有些人这样做,有些人不这样做。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.