cakephp3 + CentOS8 + nginx + php-fpmでエラー表示がされないとき

CakePHP3

CakePHP3で開発をしていて、Syntax Errorが出ると、nginxが500を返そうとして、404を出すという謎症状が発生しました。

 

通常、CakePHP3のDebugモードしておいてPHPの構文などが間違っているとエラーが出てエラー画面になるです。赤い画面のエラー画面ですね

 

これが出力されずに、

nginxが500エラー

webrootの50x.htmlを表示しようとする

無いから404NotFound

という謎な症状を発していました。どこにもエラーが出力されないし、よくわからなかったのです

 

原因

こちらですが、CentOS8のphp-fpmとNginxをインストールすると以下の共通ファイルにPHP実行の設定が書かれるようになりました。こいつの設定のせいで、エラーが握りつぶされてしまっていたようです。

/etc/nginx/default.d/php.conf

 

対象のファイルの設定は一旦消して、virtual hostの設定の中にPHPのいつものチューニングした設定を書くといつもの感じになりました。

 

内容を見てみる

今までは色々書かないとPHPがNGINXで動かなかったのを、インストールしたら勝手に動きますよ。という設定ですね。今回のPHPのエラーが吸い込まれる設定は以下のfastcgi_intercept_errors on;というのが悪さをしていたみたいです。こいつをOFFにすれば、一旦CakePHPのエラーが確認できるようになります。

index index.php index.html index.htm;

location ~ \.(php|phar)(/.*)?$ {
    fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;

    fastcgi_intercept_errors on;
    fastcgi_index  index.php;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_param  PATH_INFO $fastcgi_path_info;
    fastcgi_pass   php-fpm;
}

 

フレームワーク利用していると、フレームワーク側のエラーが表示されずに、躓いたりするところかもしれないですね。

参考になればと思います。