Назад | Перейти на главную страницу

Apache2 «Требовать все разрешено» не работает

У меня есть свежая установка Apache2 при тестировании Debian и я настроил виртуальный хост в таком каталоге:

<Directory "/path/to/project">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>

Однако он показывает мне ошибку 403 Forbidden, когда я обращаюсь к нему, и журнал ошибок показывает:

[Mon Sep 23 22:07:57.249276 2013] [authz_core:debug] [pid 8599] mod_authz_core.c(802): [client 127.0.0.1:49057] AH01626: authorization result of Require all denied: denied
[Mon Sep 23 22:07:57.249349 2013] [authz_core:debug] [pid 8599] mod_authz_core.c(802): [client 127.0.0.1:49057] AH01626: authorization result of <RequireAny>: denied
[Mon Sep 23 22:07:57.249361 2013] [authz_core:error] [pid 8599] [client 127.0.0.1:49057] AH01630: client denied by server configuration: /path/to/project/some_file

Почему это показывает "результат Требовать все отклонено: отклонено" если я использую «Требовать все предоставлено»?

Эти файлы доступны для чтения любому пользователю, и на всякий случай я безуспешно пытался сменить владельца на Apache (www-data). Кроме того, хост по умолчанию на http://localhost нормально работает и phpmyadmin в http://localhost/phpmyadmin тоже работает.

Вся помощь, которую я нашел в Интернете, касается замены директивы Order на Require. Я уже это сделал. В чем может быть проблема сейчас?

Вот две вещи, которые стоит попробовать:

1) Беги apachectl -t чтобы проверить синтаксис вашего файла действителен.

2) Беги apachectl -S показать, какие файлы разбираются.

Например, вы можете редактировать /usr/local/etc/apache2/2.4/httpd.conf, и это правильно? ... но если вы запустите apachectl -S, вы можете увидеть:

VirtualHost configuration:
*:80                   localhost (/private/etc/apache2/extra/httpd-vhosts.conf:23)

т.е. Виртуальный хост переопределяет ваш httpd.conf и может содержать собственный Require all denied или похожие.

Вы настроили авторизацию, но не аутентификацию. Таким образом, хотя «Требовать все предоставлено» предоставит доступ всем аутентифицированным пользователям, ваши пользователи фактически не аутентифицируются.

Поскольку вы используете AllowOverride All директива, у вас также может быть .htaccess файл в /path/to/project/. Это может содержать директиву overriden.

Также проверьте, нет ли у вас другого параметра в VHost, например.

После установки Wampserver 32 у меня возникла та же проблема с отказом от Apache.

Я проверил и пытаюсь изменить httpd.conf file разными способами в течение 3 дней безуспешно, обходя все руководства Apache и интернет-форумы со знаменитой ошибкой:

AH01630: клиент отклонен конфигурацией сервера

Я был совершенно уверен, что я не определял VirtualHost, и ничего не должно быть видно в файле httpd.conf.

Наконец, я настроил сервер для "отладки" файла ошибок, что дало мне более интересное сообщение:

AH01626: результат авторизации Require local: denied

что, в свою очередь, привело меня к этому посту.

И вот оно, спрятанное в C:\wamp\bin\apache\apache2.4.18\conf\extra\httpd-vhosts.conf файл: нежелательный VirtualHost с явным «Требовать локальный», который, конечно же, отклонил все мои запросы извне сервера.

Теперь я очистил этот файл до тех пор, пока мне не понадобится VirtualHost, и он отлично работает. В конце концов, я считаю довольно странным со стороны Wampserver не только предварительно настроить этот файл без уведомления пользователя, но и установить значение по умолчанию, чтобы «сервер» ничего не мог обслуживать.