这是在我的开发机器上,运行的是 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/
这对我有用。