PHP警告:未知:无法打开流

时间:2011-03-16 14:12:23

标签: php apache

我最近编辑了apache httpd.conf文件,以便mod_rewrite工作。我不知道这个问题是否源于此问题,但是从那天起我就遇到了这个问题 这是我在运行软件时在前端看到的内容 -

  

服务器错误网站遇到了   检索时出错   http://localhost/prestashop/。有可能   关闭进行维护或配置   不正确。

没有特定文件可以触发此操作。但是我看到通常由4-5个php文件组成的小程序运行正常,但是包含大量文件的软件(如PrestaShop)没有。 我检查了日志,这就是我找到的。

[Wed Mar 16 19:33:39 2011] [error] [client ::1] PHP Warning:  Unknown: failed to open stream: Permission denied in Unknown on line 0
[Wed Mar 16 19:33:39 2011] [error] [client ::1] PHP Fatal error:  Unknown: Failed opening required '/var/www/html/yomig/index.php' (include_path='.:/usr/share/pear:/usr/share/php') in Unknown on line 0
[Wed Mar 16 19:33:39 2011] [error] [client ::1] File does not exist: /var/www/html/favicon.ico
[Wed Mar 16 19:33:41 2011] [error] [client ::1] PHP Warning:  Unknown: failed to open stream: Permission denied in Unknown on line 0
[Wed Mar 16 19:33:41 2011] [error] [client ::1] PHP Fatal error:  Unknown: Failed opening required '/var/www/html/yomig/index.php' (include_path='.:/usr/share/pear:/usr/share/php') in Unknown on line 0

18 个答案:

答案 0 :(得分:130)

遇到同样的错误,对我来说这是因为在我的Mac上我将DocumentRoot更改为我的用户站点目录。

为了解决这个问题,我运行了recursive命令以确保Apache服务具有读权限。

sudo chmod -R 755 ~/Sites

答案 1 :(得分:31)

如果您正在运行Fedora,请确保SELinux没有干扰。您可以使用以下命令解决此问题:

    sudo /sbin/restorecon -R /var/www/. 

此处有更多信息:linuxquestions.org/questions/linux-server-73/

答案 2 :(得分:9)

我遇到了同样的错误,我的问题是文件权限不正确。

chmod 755 index.php

为我工作。

答案 3 :(得分:4)

将错误的文件地址插入.htaccess

时出现此问题
php_value auto_prepend_file "/home/user/wrong/address/config.php"

因此,如果您使用 auto_prepend_file 检查文件路径。它从.htaccess调用,因此PHP无法确定错误文件和行。

答案 4 :(得分:4)

这里有一些指导如何解决它。转到:

cd /var/www

sudo chown www-data:www-data * -R

sudo usermod -a -G www-data username

使用您的用户名更改用户名。我希望它有所帮助。

答案 5 :(得分:4)

在我看来,真正的方法是:

# add READ permission to all directories and files under your DocumentRoot
sudo chmod +r /path/to/DocumentRoot/ -R

# add EXECUTE permission to all DIRECTORIES under your DocumentRoot
find /path/to/DocumentRoot/ -type d -exec chmod +x {} \;

答案 6 :(得分:2)

今天我发现了 /home/user/public_html/index.php ,解决方法是chmod o+x /home/user,因为这个目录必须有X,否则apache服务器无法列出文件(即执行ls

答案 7 :(得分:2)

这是一个SELinux阻塞问题,Linux阻止了httpd访问。这是解决方案:

# restorecon '/var/www/html/wiki/index.php'
# restorecon -R '/var/www/html/wiki/index.php'
# /sbin/restorecon '/var/www/html/wiki/index.php'

答案 8 :(得分:1)

在我的情况下,文件夹访问列表中缺少apache使用的组_www,所以首先我必须添加缺少的组,如下所示:

sudo chown -R _www ~/path-to-folder

_www更改为以apache身份运行的任何用户或组。

使用apachectl -S

查找apache的用户/组。

输出巨大,但最后看一下:

User: name="_www"
Group: name="_www"

答案 9 :(得分:1)

在Fedora 25中,它被证明是一个SE Linux问题,通知给出了这个对我有用的解决方案。

setsebool -P httpd_read_user_content 1

答案 10 :(得分:1)

我刚遇到同样的问题,在我的情况下,它是由selinux引起的。禁用它解决了这个问题。不,我在工作站上不需要selinux,谢谢。

答案 11 :(得分:1)

只需引用user1992554的上述答案 这个在Linux Mint中完全适合我,摆脱警告:无法打开流:权限被拒绝

cd / var / www
sudo chown www-data:www-data * -R
sudo usermod -a -G www-data username

答案 12 :(得分:0)

除权限外,问题可能是open_basedir。如果您正在使用它(我建议使用它),请在VirtualHost上检查设置:

 php_admin_value open_basedir <YOUR ROOT>

答案 13 :(得分:0)

转到文件夹htdocs

cd htdocs

执行

chmod -R 755 sites

不需要sudo!

答案 14 :(得分:0)

检查dos和unix文件格式。如果使用dos文件格式,则在linux平台上会出现此问题。使用如下所示的doc2unix命令,然后重试它应该工作 dos2unix * .php

以下问题的解决方案

Wed Nov 12 07:50:19 2014] [error] [client IP1] PHP Warning: Unknown: failed to
    open stream: Permission denied in Unknown on line 0
[Wed Nov 12 07:50:19 2014] [error] [client IP1] PHP Fatal error: Unknown: Failed
    opening required '/var/www/html/index.php' (include_path='.:/usr/share/pear:
    /usr/share/php') in Unknown on line 0

答案 15 :(得分:0)

有一次,这也发生在我身上。当我搜索这个问题时,我知道当文件的权限被错误地设置为000(这意味着没有人可以读取,写入或执行该文件)时会发生这种情况。然后我只是将我的文件权限权限更改为Read&amp;写,它对我有用。

更改mac上的文件权限设置:右键单击特定文件,然后单击从下拉菜单中获取信息,并参阅共享和权限面板,并将权限设置更改为Read&amp;写

更多:http://www.itoctopus.com/warning-unknown-failed-to-open-stream-permission-denied-in-unknown-on-line-0-error-in-joomla

答案 16 :(得分:0)

这不是问题的直接答案,但我遇到了同样的问题。我在我的Ubuntu Server VPS上安装了VSFTPD。我可以上传文件,但我上传的每个文件都没有执行权限(所有文件都有权限“600”)。这些帖子解释了如何配置VSFTPD以设置文件的默认权限:

答案 17 :(得分:0)

如果您忘记为其他目录创建了Windows符号链接,并且其他目录没有适当的权限,则也会发生这种情况(特别容易引起混淆)。