Apache + php无法从某个目录打开php脚本

时间:2014-07-14 14:09:21

标签: php linux apache

我在/var/www中有两个目录:

root@user:/var/www# ls -l
drwxrwxrwx 2 root root      4096 Июл 14 17:59 first
drwxrwxrwx 2 root root      4096 Июл 14 18:00 second

使用完全相同的php脚本:

root@user:/var/www# ls -l first/
-rwxrwxrwx 1 root root 20 Июл 14 16:37 info.php

root@user:/var/www# ls -l second/
-rwxrwxrwx 1 root root 20 Июл 14 16:37 info.php

info.php的:

<?php
phpinfo();
?>

但是从first/目录Apache打开脚本,来自second/拉错误:

( ! ) Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0

( ! ) Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0

( ! ) Fatal error: Unknown: Failed opening required '/var/www/second/info.php' (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0

可能是什么原因?

目录配置:

DocumentRoot "/var/www"

<Directory "/var/www">
        Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>

6 个答案:

答案 0 :(得分:1)

您需要将两个文件夹的所有者从“root”更改为apache。

尝试sudo chown -R [yourusername] :www-data / var / www

这应该有所帮助。

答案 1 :(得分:0)

试试这个:

sudo chmod -R 755 /var/www

答案 2 :(得分:0)

这里有很多东西要尝试 1)您的.htaccess是哪个文件夹? 2)你提供的错误提示php会在include_path ='。:/ usr / share / php:/ usr / share / pear'中查找脚本 这表明脚本仅出现在以下路径中。 3)您可能想要检查ls -Z是否可以揭示目录的安全上下文中的差异。

答案 3 :(得分:0)

有时候SeLinux Context是你需要设置的东西。在这种情况下:

ls -lZ

如果你有像

这样的东西
rw-r--r--. root root unconfined_u:object_r:etc_t:s0 

OR

 drwxr-xr-x. root root system_u:object_r:etc_t:s0 

你需要运行

chcon -R -t httpd_sys_content_t /var/www

然后你会有

drwxr-xr-x  root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/

像这样的东西

答案 4 :(得分:-1)

sudo chown -R www-data:www-data /var/www/

sudo service apache2 restart

该群组可能是根本问题

答案 5 :(得分:-2)

您也可以尝试过:

sudo chown -R apache:apache /var/www