Это на моей машине разработчика, на которой работает 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/
У меня это работает.