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 all
2.4 конфигурация:
Require all granted
также не забудьте перезагрузить сервер apache после этих изменений (# service httpd restart
)
для всех каталогов напишите Require all granted
вместо Allow from all
обновление
Если выше не работает, то также удалите этот нижеприведенные строки:
порядок, разрешить,запретить
Я сделал те же изменения, которые ravisorg предложил OSX 10.10 Yosemite, который обновляет Apache до версии 2.4. Ниже приведены изменения, которые были добавлены в http.conf.
<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, он просто работал, я думаю, он перезапустил себя, когда я пошел на свой localhost, я честно не знаю, но я думаю, что проблема в том, что Apache не перезапускается при использовании перезапуска apachectl или остановки или запуска. Надеюсь, это кому-то поможет.
Если вы следите за журналом ошибок и перезагружаете страницу, вы должны увидеть дополнительную информацию о точной проблеме.
возьмите переменные среды, чтобы ${APACHE_LOG_DIR} действительно работал...
source /etc/apache2/envvars
затем хвост и смотреть...
tail -f ${APACHE_LOG_DIR}/error.log
Я решил себя после того, как провел пару часов.
Я установил Apache / 2.4.7 (Ubuntu) через coookbook в vagrant vm.
/ etc/apache2 / apache2.conf файл не имеет <VirtualHost *:80>
элемент по умолчанию.
Я сделал два изменения, чтобы сделать это
- добавил
<VirtualHost *:80>
- добавил
Индексы Опции FollowSymLinks
AllowOverride все
Разрешить от всех
затем, наконец, я просто загрузки ВМ..
кто-нибудь думал о том, что WAMP server по умолчанию не включает . Мой подход состоит в том, чтобы удалить Примечание ниже
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
директивы, упомянутые в других ответах, должны знать, что несоответствующее регулярное выражение DirectoryMatch
директива также может вызвать эту ошибку.
если запрошенный путь /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) отказывалась сохранять и бросать эту ошибку. Увеличил размер загрузки изображения, и это сработало сразу.