Apache根本无法访问目录(禁止403错误),无法识别原因?
我做了一个vhost:
创建:/etc/apache2/sites-available/dev.testvhost.com.conf
<VirtualHost *:80>
DocumentRoot /home/najam/projects/php/testvhost
ServerName dev.testvhost.com
</VirtualHost>
在/ etc / hosts
中添加了servername127.0.0.1 dev.testvhost.com
执行命令:
sudo a2ensite dev.testvhost.com.conf
然后:
sudo service apache2 restart
将浏览器指向http://dev.testvhost.com会出现403禁止错误,而每次刷新时都会显示错误日志。
[Wed Jul 13 16:19:42.277573 2016] [authz_core:error] [pid 20067] [client 127.0.0.1:58230] AH01630:服务器拒绝客户端 配置:/ home / najam / projects / php / testvhost /
我非常确定导致错误的问题,因为“testvhost”文件夹位于主目录“/ home / najam / projects / php / testvhost”中,当我将文件夹移动到/ var / www /它开始工作时(不禁止错误)(在dev.testvhost.com.conf中相应地修改documentroot路径后)
答案 0 :(得分:3)
Apache使用另一个用户帐户,名为daemon / www-data,具体取决于安装。如果您切换到特定用户并尝试进入上面提到的目录,那么由于权限问题,它将无法实现。
su www-data # switch to the user apache running on
cd /home/najam/projects/php/testvhost
它将返回错误。因此,您需要以递归方式向特定目录添加权限。
httpd.conf中/var/www
配置的另一个问题是默认情况下允许其中的连接。由于/ home不是/ var / www的子目录,因此您需要apache,如目录的权限:
<VirtualHost *:80>
DocumentRoot /home/najam/projects/php/testvhost
ServerName dev.testvhost.com
<Directory "/home/najan/projects/php/testvhost">
Allowoverride all
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
这应该可以解决问题。
如果没有,那么您可以将httpd.conf中的Directory指令从/ var / www交换到您的主目录,因此它会将其应用于它。另一种解决方案可能是添加用户组的www数据。
答案 1 :(得分:1)
尝试编辑dev.testvhost.com.conf
,为要访问的目录添加Require all granted
指令
<VirtualHost *:80>
DocumentRoot /home/najam/projects/php/testvhost
ServerName dev.testvhost.com
<Directory "/home/najam/projects/php/testvhost">
Require all granted
</Directory>
</VirtualHost>
此块由Apache的模块mod_authz_core
控制。请参阅the docs。