4

私はZendを使用してWebサービスを開発しています。具体的には、AdobeFlexとの相互運用のためのZend_Amfです。これに伴う問題は、適切なAmfでない限り、Flexデバッガーがサーバーからの実際の回答を表示しないため、PHPエラーを簡単に確認できないことです。WebブラウザでZend_Amfエンドポイントにアクセスしてもエラーは発生しないため、エラーはAmfハンドラーの実行中に発生します。現在、firebugを使用してHTTPトラフィックを検査し、エラーを確認しています。

私の質問に対して:ログユーティリティ(Zend_Logなど)を使用して、すべてのPHPエラー、警告、および通知をHTTP応答で送信する代わりに(またはそれに加えて)ファイルに記録できますか?

4

2 に答える 2

2

set_error_handlerPHPエラーをキャッチし、Zend_Logを使用して必要に応じてログに記録するために使用できます。

この関数の唯一の問題は、すべてのPHPエラーをキャッチするわけではなく、構文エラーなどのエラーをキャッチすることはできません。

もう1つの方法は、register_shutdown_function関数で遊ぶことです

このような:

error_reporting(E_ALL);
    ini_set('display_errors', 0);

    function shutdown(){
        $isError = false;
        if ($error = error_get_last()){
            switch($error['type']){
                case E_ERROR:
                case E_CORE_ERROR:
                case E_COMPILE_ERROR:
                case E_USER_ERROR:
                    $isError = true;
                    break;
            }
        }

        if ($isError){
            echo "Script execution halted ({$error['message']})";
        } else {
            echo "Script completed";
        }
    }

    register_shutdown_function('shutdown');

両方の方法を組み合わせても、構文エラーなどのすべてのエラーをキャッチできるわけではないことに注意してください。ただし、通常のブラウザを使用すると、この種のエラーを確認できます。

于 2010-02-03T09:13:04.833 に答える
0

私の解決策がここであなたを助けるかどうかはわかりません。ただし、例外がスローされたためにアプリケーションが終了し、デフォルトのerrorControllerがトリガーされた場合。次に、http://blog.elinkmedia.net.au/2009/10/23/application-logging-with-zend_log/をご覧ください。

基本的に、ブートストラップ中にロガーインスタンスを登録し、それを使用してエラーコントローラーにエラーを記録しました。

于 2010-02-11T03:46:11.747 に答える