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;
}
フレームワーク利用していると、フレームワーク側のエラーが表示されずに、躓いたりするところかもしれないですね。
参考になればと思います。
 
  
  
  
  
