私はちょうど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を実行しています)。
なぜこれらのエラーが発生するのですか?
「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;
}
同じ問題がありました。
これを解決するために私が行ったのは、nginx、php-fpmを実行しているユーザーをチェックし、ルートがあるフォルダーにアクセスするためのアクセス許可をチェックすることでした。デフォルトは「www-data」です。
ただし、ps aux | grep php-fpm
およびps aux | grep nginx
コマンドを使用して調べることができます。
これらのプロセスを実行しているユーザーがフォルダにアクセスできることを確認する必要があります。
私はそのような構成を使用します。 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;
}
私は同じ問題を抱えていましたが、私にとっては、nginxサーバーの設定に誤って設定された、または存在しない「root」ディレクティブでした
この問題は、php-fpm.d/www.confの現在のuser:groupでユーザーとグループを変更することで解決します
デフォルトでは、ユーザーとグループは「nginx」です。これを変更してください。
お役に立てれば