403 Запрещено на ламп-сервере vhost

Это на моем компьютере разработчика, на котором работает Linux Mint 16 (который основан на Ubuntu 13.10). Я установил лампу через:

apt install lamp-server^

и я использую Apache 2.4.6

После установки лампы я создал файл info.php для запуска phpinfo(); в /var/www, и, конечно, это работало нормально. На моем компьютере разработчика мне нравится создавать ~/public_html в моей домашней папке пользователя. Внутри я создаю свои папки vhosts.

Затем я передал папку public_html пользователю www-data:group добавил my user в группу 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, если это поможет с ответом.

2 ответа

Ваше сообщение об ошибке гласит:

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
sudo chmod o+x -R /home/myuser/
sudo chmod 777 -R /home/myuser/

Это работает для меня.

Другие вопросы по тегам