• ベストアンサー

php4でエラーが発生したか検知する方法はありますか?

php4で、ini_set("display_errors",0); でエラーを非表示にした場合でも、 WarrningやFatal Errorが発生したか判別する方法はあるでしょうか? 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sgcarrot
  • ベストアンサー率68% (17/25)
回答No.1

php5だと、error_get_lastで、最後に発生したエラーの情報が取れるのですが、php4だと使えませんね。 ちょっと、めんどくさいですが、set_error_handlerを使って、エラー処理ルーチンを作って、そこで判別してはどうでしょうか? テストしてませんが、こんな感じでいけるのではないかと思います。 function ErrHandler($errno, $errstr, $errfile, $errline) { global $errsts; if ($errno == E_USER_ERROR ) $errsts="ERROR発生"; elseif ($errno == E_USER_WARNING ) $errsts="WARNING発生"; elseif ($errno == E_USER_NOTICE ) $errsts="NOTICE発生"; else $errsts="その他の何か発生"; $errsts .= $errstr; return true; } $errsts = ""; set_error_handler("myErrorHandler"); // エラーハンドラを指定 ・・・・・・・・ // ここでエラーが発生するかもしれない処理を実行 restore_error_handler(); // エラーハンドラを元に戻す if ( $errsts != "" ) { print $errsts; }

php4
質問者

お礼

function myErrorHandlerとすることで動作しました。 set_error_handler()の使い方が理解でき、目的を達成でき大変助かりました。ありがとうございました。

関連するQ&A