Я знаю, что этот вопрос часто задают, но решения, которые я видел, не сработали для меня.
У меня включен только один виртуальный хост, и я пытаюсь разрешить доступ к папке, которая не находится в корне документа
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
.
Теперь, когда я http://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
. Есть идеи?
PS Версия Ubuntu 14.04, Apache 2.4.7, я не редактировал другие файлы конфигурации.
источник
/home
с включенным ACL? (в конце битов разрешений есть знак "+", если это так (проверьте с помощьюls -l
))Ответы:
Сделайте
chmod +x
на своем пользователе dir и перезапустите apache. 755 разрешений должны работать. У меня были проблемы с 644 .источник
namei -m /home/youruser/public_html/yourfile.ext
или попробовать people.apache.org/~igalic/hacks/parsepath/home/username
для доступа к ней с помощью apace.Если в случае с selinux возникает проблема, а не просто отключить ее, эта страница и эта страница дают команду для предоставления доступа:
источник
~/public_html/
часть корневым каталогом контента, который я пытался обслуживать.chcon -R -t httpd_sys_content_t /var/www/html/phpmyadmin/
(в моей ситуации)Возможно, вы включили selinux. Пытаться
Если он показывает «Принудительный», попробуйте
и попробуйте, если это решит вашу проблему.
источник
Я столкнулся с той же проблемой, после нескольких часов попыток, я нашел решение, которое точно решает проблему:
https://wiki.apache.org/httpd/13PermissionDenied
По сути, серверу Apache требуются не только разрешения на чтение всех файлов, которые он обслуживает, но и разрешение на выполнение всех каталогов на пути вашего виртуального хоста.
Утилиту namei можно использовать для поиска проблем с разрешениями, перечислив разрешения для каждого компонента пути:
В моем случае каталог в моем пути имеет разрешение 700, это вызывает проблему. После замены на 701 проблема была решена.
источник
Я столкнулся с этой проблемой, когда пытался запустить apache в док-контейнере на хосте Ubuntu 16.04, который использовал ядро 4.4 вместо 4.10.
После того, как я выполнил эту команду на хосте и повторно развернул ее, я был в порядке:
источник
chmod
илиchown
внутри контейнера, и он на некоторое время подавляет ошибки Apache 403, только чтобы вернуться через некоторое время. Насколько я могу судить, причиной этого может быть не перезапуск контейнера или другие существенные изменения. Поскольку я действительно работаю 16.04, я попытался установить этот двоичный файл, и мои 403-е пока держатся в стороне. Я буду следить за этим, и спасибо!