我在/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>
答案 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