web-dev-qa-db-ja.com

PHPファイルのみのアクセスが拒否されました

  • SuExecでVirtualHostsを使用するApacheHTTP Server 2.2.21
  • Fcgid経由のPHP5.3.8
  • Arch Linux 2011.08.19

PHPファイルにアクセスしようとすると、Apacheから403 AccessDeniedエラーが発生します。 HTMLファイルとテキストファイルは正常に機能します。 644から777まで、考えられるPHPファイルで考えられるすべてのアクセス許可の組み合わせで遊んだことがあります。何も変更されません。

また、FCGIラッパーと親フォルダーのアクセス許可も試してみました。 o + x(777、775、773、771)を使用すると、ブラウザーで次のようになります。

アクセス禁止!

要求されたオブジェクトにアクセスする権限がありません。読み取り保護されているか、サーバーで読み取りできません。

…そしてこれはvhostエラーログにあります:

サーバー構成によってクライアントが拒否されました:/ srv/www/hostname/fcgid-bin/php-fcgid-wrapper

O-x(776、774、772、770、またはそれ以下)を使用すると、ブラウザーで次のようになります。

禁止

このサーバーで/fcgid-bin/php-fcgid-wrapper/index.phpにアクセスする権限がありません。

さらに、ErrorDocumentを使用してリクエストを処理しようとしたときに、403Forbiddenエラーが発生しました。

…そしてこれはログにあります:

(13)許可が拒否されました:/fcgid-bin/php-fcgid-wrapper/index.phpへのアクセスが拒否されました

これを取得し始めるまでセットアップが正常に機能していて、それを変更するために何ができたのかわからないので、これは本当に頭がおかしくなります。 /usr/bin/php-cgiとラッパーはどちらも、直接呼び出された場合、まったく同じ入力ファイルで正常に機能します。

これが私の仮想ホスト設定です:

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/srv/www/hostname/public/"
    ServerName hostname.com
    ServerAlias www.hostname.com
    SuexecUserGroup hostname hostname
    ErrorLog "/srv/www/hostname/logs/error.log"
    LogLevel debug
    CustomLog "/srv/www/hostname/logs/access.log" combined

    <Directory /srv/www/hostname/public>
        Order allow,deny
        Allow from all
    </Directory>

    # http://www.linode.com/forums/viewtopic.php?t=2982
    <IfModule !mod_php5.c>
    <IfModule !mod_php5_filter.c>
    <IfModule !mod_php5_hooks.c>
    <IfModule mod_actions.c>
    <IfModule mod_alias.c>
    <IfModule mod_mime.c>
    <IfModule mod_fcgid.c>
        AddHandler php-fcgi .php
        Action php-fcgi /fcgid-bin/php-fcgid-wrapper
        Alias /fcgid-bin/ /srv/www/hostname/fcgid-bin/

        <Location /fcgid-bin/>
            SetHandler fcgid-script
            Options +ExecCGI
        </Location>

        ReWriteEngine On
        ReWriteRule ^/fcgid-bin/[^/]*$ / [PT]
    </IfModule>
    </IfModule>
    </IfModule>
    </IfModule>
    </IfModule>
    </IfModule>
    </IfModule>
</VirtualHost>
3
Hugh Guiney
<Directory /srv/www/hostname/public>
    Order allow,deny
    Allow from all
</Directory>

/srv/www/hostname/fcgid-bin/は含まれません。設定の他の場所にAllowを適用していないと仮定すると、これが問題です。この場所にAllowアクセスする必要があります。

4
Shane Madden

私も同様のエラーがありましたが、

Options ExecCGI

スクリプトがあったディレクトリ(仮想サーバーのサブフォルダー内)からの行。これが、htmlファイルが正常にロードされた理由ですが、phpファイルは403を提供しました。

0
Rick