Назад | Перейти на главную страницу

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 добавила 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

Как это исправить?

P.S. Это будет для разработки сайта Drupal, если это поможет с ответом.

В вашем сообщении об ошибке говорится:

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/

У меня это работает.