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


69

我最近编辑了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

您的网站是否是根目录:/ var / www / html / yomig /或/ var / www / html /?您的配置更改似乎已破坏了webroot。您在index.php中指定了哪些内容?他们使用相对路径还是绝对路径?
Canuteson 2011年

我的网站根目录是/var/www/html/yomig..并且index.php中没有文件。
Bibhas Debnath 2011年

@AbiusX请更多解释。
Bibhas Debnath 2011年

1
我认为他建议网络服务器可能没有对“ index.php”文件的读取权限。
杰夫·帕克

嘿,该文件夹是chmod 755 -R,但是仍然没有运气。:-/
Bibhas Debnath 2011年

Answers:


143

遇到同样的错误,对我来说,这是由于在Mac上,我已将DocumentRoot更改为用户的Sites目录。

要解决此问题,我运行了递归命令以确保Apache服务具有读取权限。

sudo chmod -R 755 ~/Sites

@John +1也是我的工作方式,它的答案也不错...但是,对于为什么应该是755,我有点困惑...我的主机(活动服务器)在644上可以正常工作,我一直以为将OS用户添加到Web文件夹是正确的方法。
itsols

由于设置该目录的所有者/组的方式而引起的
John Magnolia 2013年

我已经为这里的常见错误启动了故障排除清单:stackoverflow.com/a/36577021/2873507
Vic Seedoubleyew

755完全是过度的,并且可以说是不安全的:您不希望每个目录都可以被全世界读取,并且授予每个文件执行权限是过大的。根据您的确切错误消息,您只需要chmod 644 /var/www/html/yomig/index.php。有关正确/安全的递归命令,请参见@Dexter的答案:stackoverflow.com/a/26918548
user664833


9

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

chmod 755 index.php

为我工作。


我已经为这里的常见错误启动了故障排除清单:stackoverflow.com/a/36577021/2873507
Vic Seedoubleyew

5

这里有一些指导如何修复它。去 :

cd /var/www

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

sudo usermod -a -G www-data username

用您的用户名更改userneme。希望对您有所帮助。


4

将错误的文件地址插入时出现此问题 .htaccess

php_value auto_prepend_file "/home/user/wrong/address/config.php"

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


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 {} \;

用户是否也应该www-data获得一些权利?我会给chmod g+r /path/ -R&&chown $USER:www-data /path/ -R
rubo77'9

@Dexter :(+X大写X)是只影响目录的更好方法。但是可能并非所有口味都可用chmod。因此,从本质上讲,sudo chmod +rX /path/to/DocumentRoot/ -R可能取决于您的chmod
0xC0000022L 2016年

我已经为这里的常见错误启动了故障排除清单:stackoverflow.com/a/36577021/2873507
Vic Seedoubleyew 16-4-12的

4

这是一个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'


2

今天发生在我/home/user/public_html/index.php上,解决方案是执行chmod o+x /home/user此操作,因为该目录必须有X,否则apache服务器无法列出文件(即do ls


1
x提供遍历权限。 r提供读取权限(但并非没有提供x
MikeyB 2012年

我已经为这里的常见错误启动了故障排除清单:stackoverflow.com/a/36577021/2873507
Vic Seedoubleyew 16-4-12的

1

如果您忘记创建Windows符号链接到另一个目录,并且其他目录没有适当的权限,也会发生这种情况(并且尤其令人困惑)。


我已经为这里的常见错误启动了故障排除清单:stackoverflow.com/a/36577021/2873507
Vic Seedoubleyew 16-4-12的

1

引用上述user1992554的答案,此举对我在Linux Mint中非常有效,摆脱了警告:无法打开流:权限被拒绝

cd / var / www
sudo chown www-data:www-data * -R
sudo usermod -a -G www-data用户名


1

在Fedora 25中,事实证明这是SE Linux的问题,该通知提供了适用于我的解决方案。

setsebool -P httpd_read_user_content 1


1

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

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

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

使用以下命令查找apache的用户/组 apachectl -S

输出是巨大的,但最终会看到类似以下内容的内容:

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


0

曾经,这也发生在我身上。当我搜索此问题时,我知道这是在文件权限错误地设置为000时发生的(这意味着没有人可以读取,写入或执行该文件)。然后,我只是将文件许可权特权更改为“读写”,这对我来说很有效。

要在Mac上更改文件权限设置,请执行以下操作:右键单击特定文件,然后单击从下拉菜单中获取信息,然后参考共享和权限面板,然后将权限设置更改为“读写”

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


我已经为这里的常见错误启动了故障排除清单:stackoverflow.com/a/36577021/2873507
Vic Seedoubleyew 16-4-12的

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

0

转到文件夹htdocs

cd htdocs

执行

chmod -R 755网站

无需须藤!


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.