NGINXがPHPファイルを実行しない


9

これに対する答えは見つかりませんでした。PHP5 + NGINX + PHP-FPMをインストールし、phpファイルを実行できない場合、「おっと!このリンクは壊れているようです」と表示されます。CHROMEのエラー。貴重なエラーログレポートはありません。ルートにindex.phpがあり、カスタムphpinfo.phpファイルを作成しようとしましたが、どちらも機能しませんでした。

HTMLファイルを読み込むことはできますが、PHPはできません。

これがNGINXの私のローカルサイト設定です:

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    location / {
        root   /var/www/website;
        index  index.html index.htm index.php;
    }


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

}

すべてのディレクトリの所有権をwww-data:www-dataに変更し、phpファイルに777を作成しました。nginx、FPM、何も再起動しませんでした。

助けて?:(


エラーログを確認する
マイク

すでに「貴重なエラーログレポートはありません」と言っていました。それは完全に空です。
Gabriel A. Zorrilla、2011年

問題を診断するには、さらに多くのデータが必要です。最初に「fastcgi_intercept_errors on;」を追加することをお勧めします。構成に(fastcgi_paramsにない場合)FPMエラーをログに記録します。また、error_log行に 'debug'を追加して、より詳細な情報を取得します(メインのnginx error_log(おそらく/ var / logにある)も確認してください)。あなたのserver_nameディレクティブは異常に見えます-この投稿のためにそれを置き換えたのか、それとも実際にそのようになっているかはわかりません。一般的な推奨事項として、ルートディレクティブをロケーションブロックの外に移動します。(最終的な(ありそうもない)提案:デフォルトのサーバーが、表示されているHTMLページを提供していないことを確認してください)。
cyberx86、2011年

回答:


9

「おっと!このリンクは壊れているようです」というメッセージが表示されます。CHROMEのエラー。

エラーページが512バイト未満の場合、Chromeは独自のエラーページを表示します。

次の行があると思いますfastcgi_params

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

そうである場合、でroot定義されているディレクティブがにlocation /適用されることはないlocation ~ \.php$ため、SCRIPT_FILENAMEはURIになります。

これは、rootディレクティブをserverレベルコンテキストに移動することで解決できます。

server {
    listen       80;
    server_name  im;
    access_log /var/www/website/access.log;
    error_log /var/www/website/error.log;

    root   /var/www/website;

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

}

ビンゴ。ルートをサーバーブロックに移動して、推奨どおりに機能しました。ありがとう!
Gabriel A. Zorrilla、2011年

@quanta:OPは質問の構成を編集しましたか?これはハードコーディングされたパスであるため、ルートディレクティブがロケーションコンテキストで定義されている場合でも、完全に問題なく機能するはずです。これが機能しない唯一のケースは、$ document_rootを使用してfastcgi_paramsファイルでSCRIPT_FILENAMEを定義し、ハードコードされたファイルをオーバーライドした場合です。
マーティンフィヨルドバール、

@MartinF:いいえ、OPは設定を編集しませんでした。あなたが正しい。回答を編集します。
クォンタム

-3

私の場合、php-zipパッケージがありませんでした。これを修正するために、私は実行しました:

yum install -y php-zip
systemctl restart php-fpm nginx

3
どうやら、OPの原因は完全に別のもののためでした。
スヴェン

これは、この問題のあるこのページへの道を見つけた人がOPと同じ原因を持っているという意味ではありません。彼らはwejdrossがした原因を持っている可能性が高く、この回答が役立つと思います。質問はその原因に固有のものではなく、その症状に固有のものであり、明らかに複数の原因があるため、さまざまな原因を持つ人々がここで終わる可能性があります。
Synetech

-4
    fastcgi_pass unix:/var/run/php5-fpm.sock;

4
サーバー障害へようこそ!ここには良い答えを提供する知識があるようですが、良い答えを書くにはどうすればよいですかを読んでみてくださいヘルプセンターで確認し、回答を修正して拡張してください。あなたのコマンド/コード/設定は技術的には解決策かもしれませんが、いくつかの説明は歓迎されます。前もって感謝します。
HBruijn

4
また、その1行で問題が解決されたとしてどこに行くのでしょうか。OPは2つ表示しlocationsます。線は1つに入りますか?他?どちらも?回答を完成させてください。
David Makogon
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.