403 fcgid 및 PHP에서 금지된 오류

403 fcgid 및 PHP에서 금지된 오류

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 />
 ...
 ...

관련 정보