Nginx / PHP-FPM「アクセスが拒否されました。」エラー


14

新しくインストールしたUbuntu(12.04)サーバーをセットアップしようとしていますが、php-fpmを介してPHPファイルを実行できません。私が何をしても、私は常に「アクセス拒否」を受け取ります。ページ(htmlなどではなくプレーンテキスト)。

インストール済みパッケージ:

nginx
nginx-common
nginx-full
php5
php5-cli
php5-common
php5-fpm

構成の詳細:

PHP-FPM:

user = www-data
group = www-data
listen = /var/run/php5-fpm.sock

Nginx:

user www-data;
worker_processes 3;
events { worker_connections 1024; }

デフォルト/テストドメイン:

server {
    listen       80;
    server_name  localhost;
    root         /extra/htdocs/default;
    index        index.html index.php

    access_log   /extra/logs/default/access.log;
    error_log    /extra/logs/default/error.log;

    location / {
        try_files  $uri $uri/ /index.html;
    }

    location ~ \.php
    {
        fastcgi_split_path_info  ^(.+\.php)(/.+)$;

        include fastcgi_params;

        fastcgi_index   index.php;
        fastcgi_pass    unix:/var/run/php5-fpm.sock;
        fastcgi_param   PATH_INFO         $fastcgi_path_info;
        fastcgi_param   PATH_TRANSLATED   $document_root$fastcgi_path_info;
        fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name;
    }
}

/extra/htdocs/default/index.php:

<?php
phpinfo();

その他はすべてデフォルトです。Nginxとphp-fpmの両方のログにエラーは表示されません。しかし、ロードするhttp://<server-ip>/index.phpと「アクセスが拒否されました」ページが表示されます。

トラブルシューティング:

  • index.htmlファイルは問題なく機能します。したがって、php-fpm、またはNginxとphp-fpmの間のfastcgiバインディングでなければなりません。
  • 念の/extraためwww-data、ディレクトリ全体の所有権(ユーザーとグループの両方)をに設定し、所有権を777に設定しました(もちろん動作したら、トーンダウンします)。だから、それは確かに権限の問題ではありません
  • 私がよく目にするのはsecurity.limit_extensionsの問題ではありません。デフォルトでは.phpに設定されており、まさに私が要求しているものです。.php .html同じ結果で、明示的にに設定しました。

私は本当にこれにうんざりしていて、すでにこのセットアップを2回(OSXマシン上で)インストールしており、すべてが完璧に機能しました。私が見落としているものはありますか?

ログの内容:

Nginxエラーログは空です。

Nginxアクセスログ(削除されたIP):

<ip> - - [17/Jul/2012:11:21:25 +0200] "GET /favicon.ico HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11"
<ip> - - [17/Jul/2012:11:21:28 +0200] "GET /index.php HTTP/1.1" 403 46 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11"
<ip> - - [17/Jul/2012:11:21:34 +0200] "-" 400 0 "-" "-"

php-fpmログ:

[17-Jul-2012 10:44:14] NOTICE: fpm is running, pid 4969
[17-Jul-2012 10:44:14] NOTICE: ready to handle connections

回答:


33

最後に修正しました。

犯人は私の設定のこの行でした:

fastcgi_param   PATH_TRANSLATED     $document_root$fastcgi_path_info;

この行にコメントすると、すべてが正常に機能しました。しかし、私はこれをNginxの設定について読んだほぼすべての投稿で見たので、気になりました。私の設定を100万回目に見ると、cgi.fix_pathinfo(in php.ini)が0に設定されており、1になっているはずでした。PHPが使用するデフォルト値も1なので、デバッグ時間でこれを変更したに違いありません。この値について読んだことを忘れずに、正しい値に設定されていると思った。

とにかく、この問題をグーグルで検索するのに役立つかもしれません。


5
ソリューションを共有していただきありがとうございます。これらのチュートリアルには保護されていない構成が含まれている可能性があるため、チュートリアルを信頼しないことをお勧めします。ただし、これらの構成は引き続き正常に機能する場合があります。
ポティカリムトゥ

リンクのおかげで、私はそのことに何度か遭遇し、それらの指示を適用しました。間違いは、おそらくデバッグの怒りの中で私自身のものでした(x時間後に、変更したもののいくつかを追跡できなくなります)。
ピータークルイトホフ

私のchown問題でした。
ユルゲンポール

どうもありがとうございます。この問題に何時間も取り組んでおりcgi.fix_pathinfo、0(デフォルト構成)に設定することが問題でした。
モービスレッドフォード14

2
cgi.fix_pathinfo = 0脆弱性、特に任意のファイルを介してphpコードを実行する脆弱性の軽減に役立つため、多くのチュートリアルで推奨されています。したがって、これを1に設定する場合は、自分が何をしているかを確認するか、それを補うための他の緩和策を指定してください。私は、この問題に関する良い説明を持つように、この記事を見つけました:nealpoole.com/blog/2011/04/...
MikeD
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.