403 Запрещенная ошибка с fcgid и PHP
Я пытаюсь настроить php и mod_spdy на Apache 2.4, Debian jessie, x64. Я следовал этому руководству и настроил Apache, следуя этому другому руководству, и установил следующие пакеты:
libapache2-mod-fcgid
php-cgi
php5-fpm
Теперь у меня проблемы с php-приложениями: при попытке открыть их я получаю 403 Forbidden. Вот мой /etc/apache2/conf-enabled/fcgid.conf
<Location />
AddHandler fcgid-script .php
Options +ExecCGI
FcgidWrapper /usr/bin/php-cgi .php
</Location>
И ошибку я получаю в /var/log/apache2/error.log
AH01630: client denied by server configuration: /usr/lib/cgi-bin/php5
Я пытался добавить
Order allow,deny
Allow from all
в приложении PHP VirtualHost, но результат точно такой же. Почему я получаю 403?
2 ответа
Сообщение об ошибке 403 вводит в заблуждение, но правильно. Глядя на /etc/apache2/conf-enabled/serve-cgi-bin.conf у меня есть:
<IfModule mod_alias.c>
<IfModule mod_cgi.c>
Define ENABLE_USR_LIB_CGI_BIN
</IfModule>
<IfModule mod_cgid.c>
Define ENABLE_USR_LIB_CGI_BIN
</IfModule>
<IfDefine ENABLE_USR_LIB_CGI_BIN>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
</IfDefine>
</IfModule>
Следуя потоку кода, "Требовать все предоставлено" в / usr / lib / cgi-bin выполняется только в том случае, если включены mod_cgi и / или mod_cgid. В моем случае они оба были отключены (потому что они отключены по умолчанию в Debian).
# a2enmod cgi ; a2enmod cgid ; service apache2 restart
решил проблему.
403 часто из-за отсутствия строки ScriptAlias. Например, если Location - "/", а root для сервера - /var/my-www/, поместите его непосредственно перед директивой:
ScriptAlias / /var/my-www/
<Location />
...
...