软呢帽 PHP "failed to open stream: Permission denied"

Fedora PHP "failed to open stream: Permission denied"

所以我在 Web 服务器上安装了 Apache 运行 Fedora。我正在尝试写入文本文件。

if(!empty($_POST['versionWrite'])){
$file = fopen(APP_DIR."/resources/version.txt", "w");
fwrite($file, $_POST['versionWrite'].PHP_EOL);
fclose($file);
}

当我执行代码时,我得到了这个:

Warning: fopen(/var/www/spumprnagle/resources/version.txt): failed to open stream: Permission denied in /var/www/spumprnagle/head.php on line 28

Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/spumprnagle/head.php on line 29

Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/spumprnagle/head.php on line 30

这发生在每个处理文件的脚本中。而且我不知道该怎么做才能授予 Apache 编辑文件的权限。

感谢您的宝贵时间:)。

我将从检查文件 /var/www/spumprnagle/resources/version.txt 的权限开始,以确保网络用户可以写入它。由于您在此处标记了 fedora,我相信这通常是 apache 用户,因此请尝试 chown apache:apache /var/www/spumprnagle/resources/version.txt

如果您不确定权限设置,您可以随时临时设置 777,例如chmod 777 /var/www/spumprnagle/resources/version.txt。如果这样可以解决问题,您可以将权限调低到更合理的值 (644)。

问题: apache 用户没有写文件的权限。

解决方案:

chown -R apache:apache path/to/directory

其中 apache 是 fedora 的默认用户,path/to/directory 是包含您要写入的文件的目录路径。

如果你想给单个文件权限那么省略-R

好的,我为那些在 Fedora 上搜索答案的人添加了这个答案。我将文件权限更改为 777 并将文件所有权更改为 apache:apache 但它一直抛出相同的错误。最后我发现在某些版本的 Fedora 中 SElinux 会阻止 Httpd 写入文件。解决方案是禁用 SElinux,如下所示:

 vim /etc/selinux/config 

然后按如下方式编辑文件:

 SELINUX=disabled 

然后重启。 它对我有用。 编码愉快。