PHPのバージョンが異なるサーバーでプログラムを動かしたところ、HTTP 500エラーが発生しました。
このエラーは、PHP側でエラーがあると発生するエラーです。
テスト環境では動作しているため、PHPバージョンの違いによる問題なのは明らかです。
ただ、サーバーのPHPのバージョンを変えられない場合、プログラム側で修正を入れなければいけません。
その場合、手掛かりになるのはサーバーに残る「ログ」です。
ところが、サーバーの設定によっては、多少のエラーはログに出力されない場合があります。
今回も、そんな状態で調べあぐねていたのですが、ググってみると解決方法がありました。
エラーログをPHP側から強制的に出力させる
PHPに以下のコードを入力しておくと、エラーが強制的に出力されるようになります。
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL);
エラーを画面に強制出力する設定と、エラーログに強制出力する設定です。
エラーの原因がわかれば後は簡単です。
早速PHPのプログラムに、上記の設定を盛り込んで動かしてみたところ、単なる文法エラーでした。PHPのバージョンによってはエラーにならない文法でしたが、バージョンが違うと、このようなことも起きます。
文法エラーを直し動作させたところ、HTTP 500エラーが解消されました。
調査が終わったら、エラー出力設定は削除しておきましょう
今回の設定は、エラーログを大量に出力することになるため、普段はオフにしておく必要があります。
画面にエラーメッセージが大量に出てきたり、サーバーに負担をかけたりするためです。
あくまでも原因調査のための一時的な設定にしておきましょう。