今日nginxをインストールしたところ、htmlページは正常に閲覧できるのですが、phpファイルのページを開くと真っ白になってしまい、php-fpmのログとnginxのログを見てみましたが、問題ありませんでした
。長い間ネットで検索した結果、ついに解決策を見つけたので、ここにメモしておきます
。インターネット上では、nginx 設定ファイルにそのような文が欠落していると言われています
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
この文は何のためにあるのでしょうか?実際、phpで使用されるサーバー変数、つまり$_SERVERを定義するためのものです
http://wiki.nginx.org/NginxHttpFcgiModule このサイトの下にこんな文章があります
このモジュールを使用すると、Nginx が FastCGI プロセスと対話し、プロセスに渡されるパラメーターを制御できるようになります。
実際、これはサーバーが php を処理する CGI に必要なパラメーターを渡すことを意味しており、php を実行するには少なくとも次の 2 つのパラメーターが必要です
以下は PHP に最低限必要なパラメータの例です:
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
パラメータ SCRIPT_FILENAME は、実行するスクリプトの名前を決定するために PHP によって使用され、QUERY_STRING にはリクエストのパラメータが含まれます。
そのため、SCRIPT_FILENAME システム変数を定義しないと、php はそれを解釈して実行できません
この変数の定義は、nginx 構成ファイル nginx.conf に記述することも、外部に記述して include を使用して nginx.conf に含めることもできます。