lamp-server vhost 上禁止 403

lamp-server vhost 上禁止 403

这是在我的开发机器上,运行的是 Linux mint 16(基于 Ubuntu 13.10)。我通过以下方式安装了 lamp:

apt install lamp-server^

正在运行 Apache 2.4.6

安装 lamp 后,我在 /var/www 中创建了一个 info.php 文件来运行 phpinfo();,当然,它运行良好。在我的开发机器上,我喜欢在用户主文件夹中创建一个 ~/public_html。在那里我创建了我的 vhosts 文件夹。

然后我将 public_html 文件夹交给了 www-data 用户:group 将 myuser 添加到 www-data 组,并授予用户和组 rwx 访问权限:

chmod -R 775 /home/myuser/public_html

现在我的public_html和孩子看起来像

drwxrwxr-x    5 www-data www-data  4096 Apr  1 12:10 public_html

现在我创建了一个 /etc/apache2/sites-available/example.local.conf

<VirtualHost *:80>
    ServerName example.local
    DocumentRoot "/home/myuser/public_html/example.local.d"
    <Directory "/home/myuser/public_html/example.local.d">
            Options Includes FollowSymLinks
            AllowOverride All
            Order allow,deny
            Allow from all
    </Directory>
</VirtualHost>

然后跑:

a2ensite example.local.conf
service apache2 reload // I've also service apache2 restart

然后转到 example.local 我得到 403

我尝试了几种不同的 vhost .conf 文件配置。其中一种配置中,我指定了错误日志

在 error.log 中我得到:

[Tue Apr 01 12:13:06.375465 2014] [core:error] [pid 14208] (13)Permission denied:          [client 127.0.0.1:45489] AH00035: access to / denied (filesystem path     '/home/myuser/public_html') because search permissions are missing on a component of the path

[Tue Apr 01 12:13:06.600588 2014] [core:error] [pid 14208] (13)Permission denied: [client 127.0.0.1:45489] AH00035: access to /favicon.ico denied (filesystem path '/home/myuser/public_html') because search permissions are missing on a component of the path

我该如何解决?

PS 如果这有助于回答这个问题,这将用于开发 Drupal 网站。

答案1

您的错误信息显示:

because search permissions are missing on a component of the path

这意味着父母目录不允许 Apache 遍历它。

要找出该目录,请ls -ld依次在每个目录上使用,或者(仅限 Linux)使用namei

namei -l /home/myuser/public_html

然后,您将看到权限,并能够找到需要更正权限的目录。例如,您可能会看到:

f: /home/myuser/public_html
drwxr-xr-x root   root   /
drwxr-xr-x root   root   home
drwx------ myuser myuser myuser
drwxr-xr-x myuser myuser public_html

在这种情况下,/home/myuser不允许除用户之外的任何人进行目录遍历。因此可以使用以下命令进行更正:

chmod +x /home/myuser

答案2

sudo chmod o+x -R /home/myuser/
sudo chmod 777 -R /home/myuser/

这对我有用。

相关内容