Apache 2.4, Debian jessie, x64에서 php와 mod_spdy를 구성하려고 합니다. 나는 팔로우했다이 가이드다음과 같이 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이 표시되나요?
답변1
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가 활성화된 경우에만 실행됩니다. 제 경우에는 둘 다 비활성화되었습니다(데비안에서는 기본적으로 비활성화되어 있기 때문입니다).
# a2enmod cgi ; a2enmod cgid ; service apache2 restart
문제를 해결했습니다.
답변2
403은 ScriptAlias 행이 누락되어 발생하는 경우가 많습니다. 예를 들어, 위치가 "/"이고 서버의 루트가 /var/my-www/인 경우 지시문 바로 앞에 배치합니다.
ScriptAlias / /var/my-www/
<Location />
...
...