Apache2: 'AH01630: клиент запрещен конфигурацией сервера'
Я получаю эту ошибку при попытке получить доступ к localhost через браузер.
AH01630: client denied by server configuration
Я проверил права доступа к папке моего сайта, используя:
sudo chmod 777 -R *
вот мой конфигурационный файл:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/user-name/www/myproject
<Directory />
Options FollowSymLinks
AllowOverride all
Allow from all
</Directory>
<Location />
Allow from all
Order Deny,Allow
</Location>
<Directory /home/user-name/www/myproject/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride all
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride all
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
18 ответов:
Если вы используете Apache 2.4
вы должны проверить разрешить и запретить правила
Проверьте http://httpd.apache.org/docs/2.4/upgrading.html#access
в 2.2 управление доступом на основе имени хоста клиента, IP-адреса и других характеристики клиентских запросов были выполнены с использованием директив Приказывайте, разрешайте, отрицайте и удовлетворяйте.
В 2.4 такой контроль доступа осуществляется так же, как и другие разрешение проверяет, используя новый модуль mod_authz_host.
новая директива требуются:
2.2 конфигурации:
Order allow,deny Allow from all2.4 конфигурация:
Require all grantedтакже не забудьте перезапустить сервер Apache после этих изменений (
# service httpd restart)
для всех каталогов пишите
Require all grantedвместоAllow from allобновление
Если выше не работает, то также удалите эту нижеприведенную строку:
порядок, разрешить,запретить
Я сделал те же изменения, что ravisorg предложил OSX 10.10 Yosemite, который обновляет Apache до версии 2.4. Ниже приведены изменения, которые были добавлены в http.конф.
<Directory /> AllowOverride none Require all denied </Directory> <Directory /Volumes/Data/Data/USER/Sites/> AllowOverride none Require all granted </Directory>
это сводило меня с ума за полтора дня, но я нашел решение, если все другие решения были безуспешно.
Это для macOS.
- перейти к монитору активности (spotlight search for: activity)
- в Activity monitor найдите httpd, который является сервисом Apache
- выберите тот, который принадлежит root и нажмите X в левом верхнем углу, чтобы закрыть его.
в этот момент я сразу же остановился получаю 403 ошибки и все начало работать как положено. Странно, что мне даже не пришлось перезапускать apache, он просто работал, я думаю, он перезапустился сам, когда я пошел на свой локальный хост, я честно не знаю, но я думаю, что проблема в том, что Apache фактически не перезапускается при использовании перезапуска apachectl или остановки или запуска. Надеюсь, это кому-то поможет.
Если вы следуете за журналом ошибок и перезагружаете страницу, вы должны увидеть дополнительную информацию о точной проблеме.
захватите переменные среды, чтобы ${APACHE_LOG_DIR} действительно работал...
source /etc/apache2/envvarsзатем хвост и смотреть...
tail -f ${APACHE_LOG_DIR}/error.log
Я решил себя после того, как провел пару часов.
Я установил Apache / 2.4.7 (Ubuntu) через coookbook в VM vagrant.
/ etc/apache2 / apache2.файл conf не имеет
<VirtualHost *:80>элемент по умолчанию.Я сделал два изменения, чтобы сделать это
- добавил
<VirtualHost *:80>- добавил
Индексы Опции FollowSymLinks
AllowOverride все
Разрешить от всехтогда, наконец, я просто загрузилась виртуальная машина..
кто-нибудь думал о том, что сервер wamp по умолчанию не включает . Мой подход заключается в том, чтобы удалить Примечание ниже
conf # Virtual hosts Include conf/extra/httpd-vhosts.confна . Это все.
это сводило меня с ума. Наконец-то понял, в чем проблема: Я использовал прямые пути для журнала ошибок, и они были неправильными.
почему Apache дает неопределенное (и неправильное) сообщение об ошибке? Вместо этого используйте правильное и полезное сообщение об ошибке, например: Path for ErrorLog directive " / wrong/path/and / filename.журнал " является недопустимым.
в любом случае, чтобы исправить, убедитесь, что ваши директивы журнала ошибок выглядят примерно так:
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
Если у вас есть https хост, то не забудьте сделать
Require all grantedизменения для конфигурации ssl тоже.кроме того, иногда полезно проверить разрешения как пользователь apache:
# ps -eFH | grep http # get the username used by httpd ... apache 18837 2692 0 119996 9328 9 10:33 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND # su -s/bin/bash apache # switch to that user bash-4.2$ whoami apache bash-4.2$ cd /home bash-4.2$ ls bash-4.2$ cd mysite.com bash-4.2$ ls bash-4.2$ cat file-which-does-not-work.txt
для Wamp 3 (Apache 2.4), помимо размещения сервера в сети, как описано в других ответах, в файле виртуальных хостов
conf/extra/httpd-vhosts.conf
возможно, вам придется заменитьRequire localС
Require all granted
Это применимо, если вhttpd.confвыInclude conf/extra/httpd-vhosts.conf
в моем случае,
Я использую macOS Mojave (Apache/2.4.34). Возникла проблема в настройках виртуального хоста в /etc/apache2/extra / httpd-vhosts.файл conf. после добавления необходимого тега каталога моя проблема исчезла.
требовать, чтобы все предоставленные
надеюсь, что полная структура настройки виртуального хоста спасет вас.
<VirtualHost *:80> DocumentRoot "/Users/vagabond/Sites/MainProjectFolderName/public/" ServerName project.loc <Directory /Users/vagabond/Sites/MainProjectFolderName/public/> Require all granted </Directory> ErrorLog "/Users/vagabond/Sites/logs/MainProjectFolderName.loc-error_log" CustomLog "/Users/vagabond/Sites/logs/MainProjectFolderName.loc-access_log" common </VirtualHost>все, что вам нужно сделать, это заменить MainProjectFolderName вашим точным ProjectFolderName.
рядом отсутствует
OrderиAllowдирективы, упомянутые в других ответах имейте в виду, что несоответствующее регулярное выражение aDirectoryMatchдиректива также может вызвать эту ошибку.если запрошенный путь
/home/user-foo1bar/www/myproject/folloing matcher не будет соответствовать<DirectoryMatch "/home/user-[a-z]+/www/myproject/"> ... </DirectoryMatch>таким образом, даже допустимая конфигурация доступа может вызвать эту ошибку.
один неясный (только что с ним разобрался), но возможный, причиной этого является внутреннее правило mod_rewrite, в основном файле конфигурации (нет .htaccess), который записывает путь, который существует в корне файловой системы сервера. Скажем, у вас есть
/mediaкаталог на вашем сайте, и вы переписываете что-то вроде этого:RewriteRule /some_image.png /media/some_other_location.pngЕсли у вас
/mediaкаталог в корне вашего сервера, перезапись будет предпринята к этому (что приведет к ошибке отказа в доступе), а не к одному из них каталог вашего сайта, так как корень файловой системы проверяется сначала mod_rewrite, на наличие первого каталога в пути, перед каталогом вашего сайта.
проблема может быть в том, что директива не в папке
https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html#requiredirectives
на директиву можно ссылаться в разделе , или .htaccess файлы для управления доступом к определенным частям сервера. Доступ можно контролировать на основе имени хоста клиента или IP-адреса.
У меня есть еще один, который может быть полезен кому-то. Получил то же сообщение об ошибке после обновления с версии PHP 5.6 => 7.0. Мы изменили настройки загрузки PHP и забыли изменить их после копирования. Несмотря на то, что я не загружал изображения в то время, Silverstripe (наша CMS) отказывалась сохранять и выбрасывать эту ошибку. Увеличил размер загрузки изображения, и это сработало сразу.


Comments