ラージビッグバナー(970x90)

Linux

nginx + php-fpm でエラーが出て動かない場合の確認箇所と対処方法

更新日:

ビッグバナー(piglog)728px

nginx + php-fpm でPHPの実行環境を構築した場合に動かなかったときの確認箇所と対処方法をメモします。

単純に nginx + php-fpm の環境を構築する方法は以下のエントリにまとめています。

nginx + php-fpm でPHP実行環境を構築する

基本的な内容ですが、見落としがちなところでもあるので。あとは、UNIXドメインソケットを使用する時のコツ的なところも含めて。

確認箇所と対処方法

基本的にはエラーログの出力からたどり着けるかと思いますが、ぴぐろぐで検証したことも含めてメモします。

エラーログ

php-fpm のエラーログは、/var/log/php-fpm/error.log になります。php-fpm.conf の [global] セクションで定義されています。

nginx のエラーログは、/var/log/nginx/error.log です。nginx.conf でログレベルを含め定義されているようです。

以下はぴぐろぐで確認したエラーを含め、動かない場合の確認箇所と対処方法を記す。

php-fpm

実行ユーザを変更していない

php-fpm を動かすデフォルトのユーザは apache に設定されているため、nginxで動かす場合には以下のように変更が必要。

 

php-fpm と nginx の通信方法の設定が合っていない

TCP か UNIXドメインソケット のどちらで通信するのかという話で、php-fpm での設定は、/etc/php-fpm.d/www.conf の listen ディレクティブで定義されている。以下のどちらかを指定して nginx 側の設定でも合わせる必要がある。nginx の設定は nginx の項を参照。

 

listen.ownerが変更されていない

↑の通信方法の指定で UNIXドメインソケット を使用する場合は、明示する必要がある。明示しない場合、php-fpm.sock のパーミッションが以下となっており、nginx が読めない状態。

例えば以下のように修正する。

そうすると、php-fpm.sock の所有ユーザが変更されて nginx が読める状態となる。

例えば、以下のように user は指定せず Permission のみの変更でも動くという意味ではOK。

他には、nginx を動かすユーザ hoge を変更して、そのユーザを指定するのもOK.

っと、このくらいにして次に進みます。

Nginx

php-fpm との連携でいえば、設定ファイル /etc/nginx/conf.d/default.conf の PHP の location を確認すればOK。

以下がデフォルトの状態でコメントアウトされている。

 

通信方法の設定

phpの項で触れた内容。TCPとUNIXドメインソケットのどちらで通信するのか。以下、php-fpm の設定と合わせる。

 

phpスクリプトファイルの保存先の指定

index.php をどこに設置するのかということで、例えば DocumentRoot に設置するのであれば、以下となる。$xxx は nginx の変数です。詳細は公式ページを参照。

DocumentRoot の指定は例えば以下のように変更。

このくらいでしょうか。他に追記あれば更新していきます。

以上です。

↓↓↓ 持っていると便利な一冊。

pig-log_ディスプレイ横長

リンクユニット(レスポンシブ)

-Linux
-,

Copyright© ぴぐろぐ , 2024 All Rights Reserved.