当目录在家时,为什么apache会被禁止投掷?

时间:2016-07-13 13:22:52

标签: php apache2 runtime-error virtualhost

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

中添加了servername
127.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路径后)

2 个答案:

答案 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