web-dev-qa-db-ja.com

Nginx + Php5-fpmがphpファイルをレンダリングしない

Nginx + Ruby Enterprise Edition + PHP5-fpmとMYSQLをインストールする方法を理解するのに何時間も費やしました。最後にすべてがインストールされ、すべて正常に起動したようです。

しかし、何らかの理由でphpファイルが処理されていません。

.htmlファイルは問題なく機能しますが、.phpファイルを表示しようとすると、存在していても存在しないように見えます。興味深いことに、存在しない.htmlファイルを表示しようとすると、Nice Nginx 404メッセージが表示されますが、.phpファイルを表示すると、表示されません。

私の初心者の理解では、設定に問題があるか、NginxとPHP-fpmが互いに通信していないようです。

私はnginx設定ファイルの他の多くの例を見てきましたが、物事の側面は大丈夫だと確信しています。さて...とにかく、ここにconfファイルの関連ビットがあります:

location ~ \.php$ {
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   fastcgi_param SCRIPT_FILENAME /var/www/eman/$fastcgi_script_name;
   include fastcgi_params;
 }

そして


    fastcgi_connect_timeout 60;
 fastcgi_send_timeout 180;
 fastcgi_read_timeout 180;
 fastcgi_buffer_size 128k;
 fastcgi_buffers 4 256k;
 fastcgi_busy_buffers_size 256k;
 fastcgi_temp_file_write_size 256k;
 fastcgi_intercept_errors on;

どんな助けでも大歓迎です。

edit:テストphpファイルから返されるヘッダーは次のとおりです " http://eman.id.au/test.php ":

HTTP/1.1 404 Not Found =>
Server => nginx/0.8.54
Date => Thu, 16 Dec 2010 19:30:30 GMT
Content-Type => text/html
Connection => close
X-Powered-By => PHP/5.3.2-1ubuntu4.5ppa5~lucid1
8
Emmanuel

私は今日同じ問題に遭遇したと思います、nginxはリクエストをphp-fpmに送信します(ヘッダーに示されているように)にもかかわらず、ファイルが存在し、(PHP /構文)エラーがまったくない場合でも、404を取得します。また、どのログ(nginsまたはphp-fpm)にもエラーは表示されません。

完全なnginx設定を含めていませんが、「server」セクションに「root」を定義するオプション(正しくありません)がない可能性はありますか?あなたがそうすることを確認する必要があります、それがcの正しい場所を指していること、それが「場所」の場所ではなく「サーバー」セクションの中にあること-例えば:

server {
    root /var/www/eman;
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/eman/$fastcgi_script_name;
        include fastcgi_params;
    }
}
10
fred

ヘッダーを見ると http://eman.id.au/test.php が応答し、X-Powered-By: PHP/5.3.2-1ubuntu4.5ppa5~lucid1。リクエストがPHPに渡されなかった場合は表示されません。また、PHPに渡されたファイルパスが見つからない場合、エラーNo input file specified.

あなたのサイトはpowered byヘッダーを出力し、No input file specified.エラー最も可能性の高い理由は、PHPスクリプトにエラーがあり、表示エラーがオフになっていることです。これにより、空白のページとエラーログのエントリが表示されるため、そこを見て、満杯になっていないか確認してください。

1

いくつかの考え:

   fastcgi_param SCRIPT_FILENAME /var/www/eman$fastcgi_script_name;

これには余分なスラッシュが必要ですか

   fastcgi_param SCRIPT_FILENAME /var/www/eman/$fastcgi_script_name;

NGINXにも奇妙なキャッシングが少しあるので、ブラウザでURLを試すときは、最後に?random = 12391を追加して強制的に更新します。私は設定全体で30分間戸惑っていましたが、それがずっと機能していたことがわかりましたが、キャッシュにつまずかれていました。

あなたはおそらくあなたの場所をもう少し良くエスケープしたいと思うでしょう(これはあなたが抱えているこの問題を引き起こしているわけではありませんが)それはより良い習慣です:

location ~ .php$

location ~ \.php$

.php $は、yourpage.phpだけでなく、yourpagephpなどのリクエストに一致します。

0
Andrew Taylor