Я только что установил новый 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.
Любые идеи, что может быть проблемой?
Это был правильный способ сделать это: (благодаря DaveRandom)
<Directory "C:/SITE/localhost/www"> Options ExecCGI AllowOverride all Require all granted </Directory>
Дэйв Френч объясняет далее:
После небольшого эксперимента с этим я обнаружил нюанс, который делает правильный ответ, характерный для Apache 2.3+. Похоже, что директивы
mod_access_compat
имеют приоритет над директивамиmod_access_compat
, и этоmod_access_compat
до дерева каталогов. Это означает, что если вы переходите с Apache 2.2 на Apache 2.4, и вы используете его до версии 2.2httpd.conf
, он будет работать.Если, однако, вы выполняете новую установку 2.4 и основываете свою конфигурацию по умолчанию 2.4
httpd.conf
, директивыAllow
не будут работать, потому что в разделе верхнего уровня по умолчанию используется командаRequire all denied
вместоDeny from all
, и это имеет приоритет над любыми последующими директивамиAllow
выше по дереву. Вкратце из этого следует, что если вы перенаправляете свои оргии Order / Allow / Deny в их эквивалентные Requires, вы должны все их выиграть, или вы обнаружите, что получаете 403s, которых вы не ожидали.