Разрешение Apache запрещено

Я только что установил новый Apache 2.4.2 с быстрым построением cgi php на windows.

Затем я изменил httpd.conf, добавив следующее:

LoadModule fcgid_module modules/mod_fcgid.so  
FcgidInitialEnv PHPRC "C:/SITE/PHP"
AddHandler fcgid-script .php
FcgidWrapper "C:/SITE/PHP/php-cgi.exe" .php

DocumentRoot "C:/SITE/localhost/www"
<Directory "C:/SITE/localhost/www">
    Order allow,deny
    Allow from all
</Directory>

Однако, когда я пытаюсь открыть свой сайт, он говорит:

Forbidden You don't have permission to access / on this server.

Любые идеи, что может быть проблемой?

+16
источник поделиться
1 ответ

Это был правильный способ сделать это: (благодаря DaveRandom)

<Directory "C:/SITE/localhost/www">
    Options ExecCGI
    AllowOverride all
    Require all granted
</Directory>

Dave Random объясняет далее:

После небольшого эксперимента с этим я обнаружил нюанс, который делает правильный ответ, характерный для Apache 2.3+. Похоже, что директивы mod_authz_host имеют приоритет над директивами mod_access_compat, и это пузырится по всему дереву каталогов. Это означает, что, если вы переходите с Apache 2.2 на Apache 2.4 и используете дословный текст версии 2.2 httpd.conf, он будет работать.

Если, однако, вы выполняете новую установку 2.4 и основываете свою конфигурацию по умолчанию, директивы 2.4 httpd.conf, Allow не будут работать, потому что в разделе верхнего уровня по умолчанию используется директива Require all denied вместо Deny from all, и это имеет приоритет над любыми последующими директивами Allow выше дерева. Достаточно того, что если вы переносите свои ордера Order/Allow/Deny в их эквивалентные Requires, то вы должны случайно их всех или вы обнаружите, что получаете 403, которых вы не ожидали.

+26
источник

Посмотрите другие вопросы по меткам или Задайте вопрос