【PHP】問題がわからない時の対応

2021年10月14日

以下コードを最初に実行しておくとエラーが表示されるようになる。

ini_set("display_errors", 1);
error_reporting(E_ALL);

開発が完了すればコメントアウトでもしておけばいい。

前にさくらのVPSで運用していたWebシステムが動かなくなった。正確にはheader()関数を実行すると白紙のページが表示されるという状況。URLも遷移していない。

結果としてはheader()関数を実行する前に何かしらの文字を出力していることが原因だった。その何かしらとは「改行」。具体的にはinclude先の1つのファイルの先頭が以下のようになっていた。


<?php
    session_start();

でもローカル環境や非SSLだと動く。不思議。

追記:2021-08-30

コメントアウトするのも面倒なので以下のようにしている

if(array_key_exists("mode", $_GET) && $_GET["mode"] == "debug"){
    ini_set("display_errors", 1);
    error_reporting(E_ALL);
}

これによってURLにパラメータを付与することでデバックモードとしてエラー表示を行うことが出来る。ただし実際に使用するときはパラメータ名も値ももっと複雑なものにすべきで、その場合noindexとするなどの対応をした方がいい。