Apache2 «Требовать все предоставлено» не работает


12

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

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

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

[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. Я уже сделал это. В чем может быть проблема сейчас?


Это выглядит правильно для меня. Вы уверены, что они не являются какой-то другой директивой, которая более конкретна с требованием все отказано?
Ричард Солтс

Ответы:


5

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

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или аналогичный.


3

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


9
Итак, где вы должны установить аутентификацию? Не очень понятно ...
edi9999

2
Хотя технически правильно, это не отвечает на вопрос. Require all grantedспециально разрешает весь доступ и не требует никакой аутентификации. Нет смысла в аутентификации, когда вы метафорически распахиваете двери.
Мартейн

2

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

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


Я боролся с этой ошибкой. После долгих проверок всех файлов конфигурации Apache я обнаружил файл .htaccess с недопустимым содержимым. Ни одно из сообщений не указывало на это.
Дастин Батлер

1

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

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

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

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

Наконец, я настроил сервер для файла ошибок «debug», который дал мне более интересное сообщение:

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.