web-dev-qa-db-ja.com

Nginx / FPM / PHPすべてのphpファイルは「ファイルが見つかりません」と言います。

私はちょうどcentos 5.8最終64ビットマシンにnginx 1.1.13とphp 5.4.0をインストールしました。 NginxとPHP/Fpmが実行されており、sshコマンドラインを介してphpスクリプトを実行できますが、ブラウザで「ファイルが見つかりません」というメッセージが表示され続けます。すべてのmy PHPファイルのエラー。

これは私が私のnginx.confハンドルPHPスクリプトを持っている方法です:

      location ~ \.php$
      {
              root                    /opt/nginx/html;
              fastcgi_pass            unix:/tmp/fpm.sock;
              fastcgi_index           index.php;
              fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
              include                 fastcgi_params;
      }

これは、他のサーバーからの直接のコピー/貼り付けであり、この設定で正常に動作します(ただし、古いバージョンのphp/fpmを実行しています)。

なぜこれらのエラーが発生するのですか?

8
Mr.Boon

「fastcgi_paramsを含める」を挿入します。すべての「fastcgi_param *」行の前、「include fastcgi_params;」すべての「fastcgi_param *」行を上書きします(nginxデバッグログを参照):

location ~ \.php$ {
    root                    /opt/nginx/html;
    fastcgi_pass            unix:/tmp/fpm.sock;
    fastcgi_index           index.php;
    include                 fastcgi_params;
    fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
}
17
mingalevme

同じ問題がありました。

これを解決するために私が行ったのは、nginx、php-fpmを実行しているユーザーをチェックし、ルートがあるフォルダーにアクセスするためのアクセス許可をチェックすることでした。デフォルトは「www-data」です。

ただし、ps aux | grep php-fpmおよびps aux | grep nginxコマンドを使用して調べることができます。

これらのプロセスを実行しているユーザーがフォルダにアクセスできることを確認する必要があります。

3
miog

私はそのような構成を使用します。 OS Xで動作します。私としては、@ Xosofoxの答えがうまくいきました。 nginx 1.6.2のバージョンを1.2.6と誤って入力したため、ルートが存在しないディレクトリになりました。

location ~ \.php$ {
    fastcgi_intercept_errors on;
    root           /usr/local/Cellar/nginx/1.6.2/html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME /usr/local/Cellar/nginx/1.6.2/html$fastcgi_script_name;
}
1
Hangchen Yu

私は同じ問題を抱えていましたが、私にとっては、nginxサーバーの設定に誤って設定された、または存在しない「root」ディレクティブでした

1
Xosofox

この問題は、php-fpm.d/www.confの現在のuser:groupでユーザーとグループを変更することで解決します

デフォルトでは、ユーザーとグループは「nginx」です。これを変更してください。

お役に立てれば

0