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/
Это работает для меня.