php-fpmがnginxに空の応答を返す


9

nginxは/etc/nginx/fastcgi_params、ロケーションブロックの標準を使用して、fastcgi経由でphp-fpmに接続しています。

コマンドラインから/.status(php-fpm.ini :: ping.path)に接続するとcgi-fcgi -bind、結果は期待どおりに戻ります(X-Powered-Byセット、応答本文など)。

nginxでリクエストすると、結果は空に戻ります(X-Powered-Byセット、本文の長さまたはコンテンツなし)。nginxは「有効な」応答を受け取ったため、200を返します。

tcpdumpを監視して、パリティへの要求をFCGIヘッダーで分離しました(シェルによって設定されたユーザー関連の環境変数を除いています)。


nginxを実行するユーザーに変更して、cgi-fcgi -bindテストを再実行してください。
一部のLinux Nerd、2015

私は常にNRPE展開をrootとしてテストすることで台無しにしています...同じことをしたのではないかと考えました。
一部のLinux Nerd、2015

回答:


11

標準factcgi_paramsファイルには、のキー行が含まれていませんSCRIPT_FILENAME

location ~ \.php$ {
                include fastcgi_params;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}

追加してnginxを再起動します。


4

さて、あなたの質問は少しあいまいです。いわゆる「死の白い画面」(WSOD)は、無限の量によって引き起こされる可能性があります。しかし、これに遭遇した場合に私がするいくつかのこと:

  • で以下をアクティブにしますphp.ini

    display_errors = 1
    display_startup_errors = 1
    error_log = /path/to/file
    error_reporting = -1 ; (the -1 activates absolutely everything)
    log_errors = 1
    
  • でアクティブ化php-fpm.conf

    error_log = /path/to/file
    
  • 各php-fpmプール構成に対してアクティブ化します。

    catch_workers_output = 1
    
  • リクエストを繰り返して、すべてのログをチェックします(nginxエラーログを含む)
  • ログレベルを上げる(例:nginxでのデバッグ)

これでも問題を特定できない場合は、完全なシステム情報と構成を投稿してください。それなしでは誰もあなたに正確な答えを出すことはできません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.