nginx+php-fpm 2013 年 1 月 21 日

php-fpmをyumではなく、ソースからインストールしてみるテスト。
とりあえずphpのHello Worldであるphpinfo();の出力までいければと思い、手を出してみたがはまった。

phpファイルを置く場所や実行権限など見なおしてみても
以下のエラーがでて、どうにも手詰まり。
FastCGI sent in stderr: “Primary script unknown” while reading response header from upstream

/etc/nginx/conf.d/default.conf
35行目の/scriptsを$document_rootに変えさえすればいいのだろうと思っていたが、ブラウザ
でphpファイルをリクエストしてもfile not foundを返すばかり。
35 #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
36 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

ぐぐって、以下にたどり着く
http://www.nullpop.net/?p=215

以下31行目のroot html;の記述が悪い。
よくよく同じファイル(/etc/nginx/conf.d/default.conf)の9行目を比較するとわかる。
root htmlなんてなってなくて、/usr/share/nginx/htmlに指定されている。
phpファイルもそこに置いて試そうとしていたので。。
8 location / {
9 root /usr/share/nginx/html;
10 index index.php index.html index.htm;
11 }

/etc/nginx/conf.d/default.conf
で、php-fpmを動作させるためにコメントアウトする箇所があるが、
30 location ~ \.php$ {
31 #root html;
32 root /usr/share/nginx/html;
33 fastcgi_pass 127.0.0.1:9000;
34 fastcgi_index index.php;
35 #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
36 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
37 include fastcgi_params;
38 }

結局、32行目のように指定すれば、
root /usr/share/nginx/html;

ブラウザからphpinfo();が実行できた。

これは、また環境作るときにハマリそうなのでメモ。

関連する記事:

Leave a Reply