web-dev-qa-db-ja.com

有名なもののデバッグ-stderrで送信されたFastCGI: "Primary script unknown"アップストリームからの応答ヘッダーの読み取り中

SOには、このエラーコードに関する多くの記事があります。

FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream...

これはおそらく、このエラーメッセージが多かれ少なかれ役に立たないことを意味しています。

このメッセージは、FastCGIハンドラーが何らかの理由で送信されたものが気に入らないことを示しています。問題は、その理由がわからない場合があることです。

だから私は質問を再統計しています-どうすればいいですかdebugこのエラーコード?

Phpinfo.phpファイルだけの非常にシンプルなサイトがある状況を考えてみましょう。さらに、次のように、非常に単純なnginx構成があります。

server {
    server_name testsite.local;

    root /var/local/mysite/;

    location / {
        index index.html index.htm index.php;
    }

    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass  fastcgi_backend;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

fastcgi_paramsがスクリプトに送信したものを正確に出力/ログで確認するにはどうすればよいですか?

実際のエラーメッセージを表示するにはどうすればよいですか?私の場合、php-fpmを使用しています。このエラーに関するログには情報がありません。ログは、このエラーの行を追加しません。 php-fpmには冗長モードがありますか?

/var/log/php-fpm/error.log
/var/log/php-fpm/www-error.log

Php-fpm.confファイルでこれを設定しようとしました

log_level = notice

これはphp-fpm.d/www.confファイルで:

catch_workers_output = yes
29
010110110101

質問に答えるには:

  1. php-fpm.d/www.confファイル内:

access.logエントリを設定します。

access.log = /var/log/$pool.access.log
  1. php-fpmサービスを再起動します。

  2. あなたのページにアクセスしてみてください

  3. cat /var/log/www.access.logの場合、次のようなアクセスログが表示されます。

- - 10/Nov/2016:19:02:11 +0000 "GET /app.php" 404 - - 10/Nov/2016:19:02:37 +0000 "GET /app.php" 404

「プライマリスクリプトが不明」問題を解決するには:

  • 正しいphpファイル名なしで「GET /」が表示される場合、nginx confの問題です。

  • 404で「GET /app.php」が表示される場合は、nginxがスクリプトファイル名を正しく渡しているが、php-fpmがこのファイルにアクセスできなかったことを意味します(ユーザー「php-fpm:php-fpm」は、ファイル、私を3時間閉じ込めました)

私の答えがお役に立てば幸いです。

59
Shengjie YU

rootの位置とその下のファイルの存在を確認してください。Root path TYPOのためにこのエラーが発生しました。

0
herbertD

MacOsユーザーの場合、私の状況のように誰かが遭遇した場合:

私はphpサービスを開始しました:

Sudo brew start php72

「Sudo」のアクセス許可を使用したため、アクセス許可が異なりました。 Sudoなしでphpサービスを停止および開始する必要がありました。

Sudo brew stop php72
brew start php72

希望は誰かに役立ちます。

0
İsmail Atkurt