Я знаю, что этот вопрос задают много, но решения, которые я видел, не работали для меня.
У меня только один виртуальный хост включен, и я пытаюсь включить доступ к папке это не под корнями документа
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Alias /movies /home/username/Videos/Movies
<Directory /home/username/Videos/Movies/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Я установил /etc/apache2/envvars следующим образом
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=public
Я убедился, что / home / username / Videos / и его субфлоры принадлежат username:public, установите разрешения 777 (после того, как 775 не сработало) и убедитесь, что пользователь www-data принадлежит группе public.
Теперь, когда я вхожу в localhost/movies, я получаю
[Mon Apr 21 11:28:14.971844 2014] [core:error] [pid 1385:tid 140067725104896] (13)Permission denied: [client 127.0.0.1:46603] AH00035: access to /movies/ denied (filesystem path '/home/username/Videos') because search permissions are missing on a component of the path
Но когда я установил /etc/apache2/envvars для запуска Apache под username (мое собственное имя пользователя), все работает отлично. Проблема связана с разрешением, но я не вижу, как в моем случае, особенно когда я устанавливаю разрешения на 777. Любые идеи?
P.S. Версия Ubuntu - 14.04, Apache - 2.4.7, и я не редактировал другие файлы конфигурации.
Если в случае проблемы selinux, а не просто отключите его, эта страница и эта страница предоставляют команду для предоставления доступа:
chcon -R -t httpd_sys_content_t ~/public_html/
Возможно, у вас есть selinux. Попробуйте
getenforce
Если он показывает «Enforcing», попробуйте
setenforce 0
и попробуйте, если это исправляет вашу проблему.
Я столкнулся с той же проблемой, после нескольких часов попыток я нашел решение, которое точно решает проблему:
https://wiki.apache.org/httpd/13PermissionDenied
В принципе, сервер Apache не только требует разрешения на чтение всех файлов, которые он обслуживает, но и разрешения на выполнение всех каталогов на пути вашего виртуального хоста.
Утилита namei может использоваться для поиска проблем с разрешениями перечисляя разрешения по каждому компоненту пути:
namei -m /usr/local/apache2/htdocs/foo/bar.html
В моем случае каталог на моем пути имеет разрешение 700, это вызывает проблему. После изменения на 701 проблема была решена.
У меня возникла эта проблема, когда я пытался запустить apache в контейнере docker на хосте Ubuntu 16.04, который использовал ядро 4.4 вместо 4.10.
Как только я запустил эту команду на хосте и re-deployed, я был в порядке:
sudo apt-get install --install-recommends linux-generic-hwe-16.04