2

私のZendアプリケーションは、新しいコントローラーが機能しなくなる原因となる何か(文字通り何も意味しない)を変更した今日まで正常に実行されていました。コードのすべての部分をデバッグしましたが、なぜそれが起こっているのかについての痕跡を見つけることができません!

以前に追加したコントロールは機能しており、新しいアクションもそれらに追加されていますが、新しく追加されたコントロールは機能しません。

エラーは次のとおりです。HTTPエラー500(内部サーバーエラー):サーバーが要求を実行しようとしたときに、予期しない状態が発生しました。

この質問のような同じ状況:

ZendErrorコントローラーが500時間動作を停止しました

解決策を持っているどんな体でも!返信してください。apache、zend、phpライブラリソースのすべてのビットを新しいものに置き換えましたが、成功しませんでした。

4

1 に答える 1

0

これをトラブルシューティングするのに十分なログが記録されていないと思います。致命的なエラー ハンドラはありますか? 何が起こっているのかを理解するのに役立つものを次に示します (Boostrap クラスに追加)。基本的に、致命的なエラーをログ ファイルに記録し、静的な html ページをユーザーに表示します。

/**
 * Fatal Error Catcher which runs as a registered shutdown function
 */
public static function fatalErrorCatcher() {
    $error = error_get_last();
    if ($error && (
            $error['type'] === E_ERROR ||
            $error['type'] === E_COMPILE_ERROR ||
            $error['type'] === E_CORE_ERROR ||
            $error['type'] === E_PARSE
    )) {
        // kill the buffer content, it's broken anyway
        while (ob_get_level()) {
            ob_end_clean();
        }
        // make a summary of the error
        $errorSummary = date('m/d/Y G:i:s') . ' '
            . $error['message'] . ' on file ' . $error['file'] . ':' . $error['line'] . ' URL:'
            . $_SERVER["SERVER_NAME"]
            . ($_SERVER["SERVER_PORT"] != "80" ? ":" . $_SERVER["SERVER_PORT"] : "")
            . $_SERVER["REQUEST_URI"] . "\n";
        // log the error to file
        file_put_contents('/var/log/fata-errors.log', $errorSummary, FILE_APPEND | LOCK_EX);
        // tell the user we're sorry
        header('HTTP/1.1 500 Internal Server Error');
        echo file_get_contents('/var/www/html/fail-whale.html');
    }
}

そして、初期化のできるだけ早い段階でブートストラップに登録します。

register_shutdown_function(array('Bootstrap', 'fatalErrorCatcher'));
于 2012-08-09T18:51:52.067 に答える