- ベストアンサー
PHPでfatal errorが出ても無視して続行する方法はありませんでしょうか?
- PHPでfatal errorが出ても無視して続行する方法はありますか?エラー制御演算子を使用しても、エラー以降の構文は実行されません。例外以外のエラーでは強制終了してしまいます。次の行へ進む方法はありませんか?
- PHPのfatal errorが発生しても、続行する方法はありますか?エラー制御演算子を使用しても、エラー以降のコードは実行されません。例外以外のエラーではプログラムは終了してしまいます。次の行へ進む方法はあるでしょうか?
- PHPでfatal errorが出ても、処理を続行する方法はありますか?エラー制御演算子を使用した場合でも、エラー以降のコードは実行されません。例外以外のエラーではプログラムは停止してしまいます。次の行に進む方法はありますか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
set_error_handler()などエラー処理をいれてみては? http://www.php.net/manual/ja/book.errorfunc.php たとえば、 <?PHP print "x"; trigger_error("hoge", E_USER_ERROR); print "y"; ?> を実行すると、xが表示された後Fortal errorが発生してyは表示されません。 こうすると、フォータルエラーをつかんで復帰します エラーの種類によってcaseを分けて処理していけばよいでしょう。 (さすがにシンタックスエラーは回避できないとおもいますが) <?php function myErrorHandler($errno, $errstr, $errfile, $errline) { switch ($errno) { case E_USER_ERROR: print "致命的なエラー つづく...<br>"; break; default: print "その他のエラー"; break; } return true; } $old_error_handler = set_error_handler("myErrorHandler"); print "x"; trigger_error("hoge", E_USER_ERROR); print "y"; ?>
その他の回答 (3)
- pa_cotta
- ベストアンサー率43% (25/58)
いや、ワーニングじゃなくてエラーが出てるのに先に進ませても意味がないです。 しかもparse errorって構文エラーのことですから、プログラムを実行する以前の問題です。 変な横着はしないできちんとエラーが出るたびに該当箇所を修正しましょう。 どうしても先に進みたいのであれば、エラーが出ている部分をコメントアウトするなりスタブを作って回避するなりすればいいですが、修正忘れなどしないように注意が必要です。
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
致命的なエラーの為、続行させる為には、致命的なエラーが発生しないように プログラムを直しましょう。 また、警告エラーも、本来出っぱなしになっていても良いものではありませんよ。
お礼
http://keicode.com/cgi/php-error-handling.php 結局次に進めるのはtrycatchで拾える分のみにして、それ以外は上記サイトのregister_shutdown_functionを使ってエラー処理を行うことにしました。 ありがとうございました。
補足
後だしになってしまって申し訳ないのですが、fatal errorの発生する可能性のあるphpファイルが暗号化されているファイルで編集一切不可能なのです。 それを呼び出すのは必須条件のためそれをインクルードする部分もしくはインクルードする処理の関数を呼び出す部分で@もしくはtry等をするしかないと思っていますが、fatalerrorを引き起こした時処理を呼び出し元に戻したいと思っていますが、上手くいきません。 処理自体はファイルを生成するというのが大部分のためerrorになったかどうかはファイルが出来ているかを確認することで何とか出来そうなので、エラーになってもその次に進めたいと考えています。 shell_exec等でphpコマンドから該当ファイルを呼ぶ等も候補に入れています。 何かいい方法は無いでしょうか?
- agunuz
- ベストアンサー率65% (288/438)
fatal errorの意味を理解されていないのでしょうか? http://ejje.weblio.jp/content/fatal+error 無視して続行することが不可能なエラーだから止まるのですよ。
お礼
後だしになってしまって申し訳ないのですが、fatal errorの発生する可能性のあるphpファイルが暗号化されているファイルで編集一切不可能なのです。 それを呼び出すのは必須条件のためそれをインクルードする部分もしくはインクルードする処理の関数を呼び出す部分で@もしくはtry等をするしかないと思っていますが、fatalerrorを引き起こした時処理を呼び出し元に戻したいと思っていますが、上手くいきません。 処理自体はファイルを生成するというのが大部分のためerrorになったかどうかはファイルが出来ているかを確認することで何とか出来そうなので、エラーになってもその次に進めたいと考えています。 http://keicode.com/cgi/php-error-handling.php 結局次に進めるのはtrycatchで拾える分のみにして、それ以外は上記サイトのregister_shutdown_functionを使ってエラー処理を行うことにしました。 ありがとうございました。
お礼
http://keicode.com/cgi/php-error-handling.php 結局次に進めるのはtrycatchで拾える分のみにして、それ以外は上記サイトのregister_shutdown_functionを使ってエラー処理を行うことにしました。 set_error_handlerのキーワードで検索した時に引っかかってきたのがegister_shutdown_functionだったので、この回答が無ければたどり着けませんでした。 ありがとうございました。