php5-fpm无法打开文件进行阅读

时间:2013-05-09 01:49:38

标签: linux php

我试图让我的php cgi进程从我的文件系统上的文件中读取。文件和父文件夹都允许所有rwx权限,文件与php进程,www-data具有相同的所有者和组ID。

无论我如何尝试打开文件(read(),file_get_contents(),stream_get_contents()),我总是得到同样的错误: failed to open stream: Permission denied

我在php交互式会话中打开文件没问题,在命令行上使用cat或者使用python打开文件。

发生了什么事?

2 个答案:

答案 0 :(得分:1)

我之前在启用了SELinux的Linux系统上看到过这个问题。 httpd进程通常有自己的安全上下文,只允许访问某些文件。

您可以通过在文件和php脚本上运行ls --scontext来检查SELinux是否已启用。如果这两个文件具有相同的上下文或者ls抱怨该参数,那么SELinux可能不是问题的原因。

假设SELinux是导致问题的原因,那么您可以尝试使用chcon命令设置相关文件,使其具有与php脚本相同的安全上下文。例如:

chcon --reference=/var/www/html/page.php /data/filetoread

其中/var/www/html/page.php是您的php脚本,/data/filetoread是您要访问的文件。

答案 1 :(得分:0)

事实证明,此文件位于未使用allow_other选项安装的FUSE文件系统下。