QA@IT

IIS8.0とPHP5.6での500エラーの扱い

3812 PV

上記の組み合わせで、
PHPがデータベースに接続失敗した場合に500エラーを出したいと思っています

何もしないでいると、IE上に「500エラー」という画面が表示されるのですが(Firefox等では真っ白のまま)
独自のエラーページを作成し、IISマネージャーのエラーページの登録画面に自作した500エラーのページを登録したのですが、
そのエラーページに遷移しません

独自に作成したエラーページへの遷移は他に何を設定したらいいでしょうか

回答

解決しました
php.iniの
max_execution_timeを処理を速くしようと20にしていたのですが
デフォルト値の30にしたらodbc_connectが接続失敗時にちゃんとfalseを取得できるようになりました

お騒がせしました・・・・

編集 履歴 (0)

ありがとうございます。
そのページを参考にしてみたのですが
他のエラーはちゃんと転送されるのですが、500エラー(サーバ内部エラー)だけはエラーページに遷移しません

いったんエラーページの設定を全部デフォルトに戻したところ、元々500エラーだけエラーページに遷移していませんでした。

発生したエラーはデータベースを停止してエラーテストをしたところです
odbc_connect関数で止まっており、その後が実行されていません(phpの関数仕様を読むと本当は戻り値にfalseが帰ってくることになっているはずなのですが・・・・)

//ページ自体は500エラーで終了
//LogWrite関数は自作
try{
LogWrite("開始"); //ログ出力される
    $rslt=odbc_connect("svr","usr","pass");
    if($rslt==false){
LogWrite("失敗"); //ログ出力されない
    }else{
LogWrite("成功"); //ログ出力されない
    }
}catch(Exception $e){
LogWrite("キャッチ");   //ログ出力されない
}

odbc_connectが止まったところでIISのログ自体は

2015/08/21 12:00:00 ....... http://XXXX/YYYY 500 0 0 30000

となっているのでIIS自体は500エラーの発生を検知はしているようです
不思議なのは20-30回くらい連続してエラーになるような動作をさせると、そのうちの一回くらいはエラーページに遷移します

いろいろなページを見てもphpのデバッグ情報を500エラーのページに表示させるなどの情報はあるのですが
500エラーだけエラーページに遷移しないというような事は無いようで、ちょっとお手上げな感じです
PHPとIIS8(WindowsServer2012)の組み合わせで、こんな現象が発生するというような情報は無いでしょうか

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。