2

まず、40 分近くグーグルで検索しましたが、特定の問題に対する答えが見つかりません。エラーを修正するのが最善であることは理解していますが、それはここでは問題ではありません。

私がする必要があるのは、phpが2048エラーを報告しないようにすることです。その理由は、私はサイトを継承しており、シャットダウン機能を設定して致命的なエラーをキャッチし、テキスト メッセージを送信する必要があるからです。それはすべて問題ありません。ただし、コードは常に 2048 エラーをスローしているため、シャットダウン関数がヒットすると、最後にスローされたエラーは常に 2048 であり、実際の致命的なエラーではありません。それは問題ではないので、表示エラーをオフにする必要はありません。私が関心を持っているのはバックエンド処理です。

エラー報告をオフにして、これをテストしました。これを行うと、期待どおりの結果が得られますが、それはサーバーに他のエラーを記録できないことを意味します。E_STRICT と思われる 2048 エラーを無視したいだけです。ただし、エラー報告は E_ERROR にのみ設定されており、E_STRICT が含まれているとは思いません。

では、php が 2048 エラーの報告を完全に停止して、実際の致命的なエラーを上書きしないようにするにはどうすればよいですか? ただし、サーバー上の他のエラーをログに記録できるように、E_ERROR を保持します...

編集

これは解決されました...一種の:

そのエラーを適切に抑制する方法や、error_reporting() が error_get_last に影響する理由はまだわかりません。ただし、サーバーにエラーを記録しながらそのエラーを無視できるという根本的な問題は解決されています。エラー報告を完全にオフのままにし、エラー報告をシャットダウン機能に追加して、データを手動でログ ファイルに書き込みました。

致命的ではないすべてのエラーに使用したコードは次のとおりです。

        $message="\n[".date('d-M-Y H:i:s',time())."] PHP Notice:  ".$e['message']." in ".$e['file']." on line ".$e['line'];
        $file=dirname(__FILE__) . '/error_log-'.date("m-d-Y").'.txt';
        file_put_contents($file, $message, FILE_APPEND | LOCK_EX);

それは私が探していた答えではありませんが、それは私の問題を解決しました

平和。

4

2 に答える 2

0

エラー報告レベルをどのように設定しましたか。に設定した場合E_ERRORE_STRICTスキップされます。

error_reporting(E_ERROR);
于 2012-11-17T06:35:35.440 に答える
0

これでPHP.iniファイルを変更します

E_ALL & ~E_STRICT

これにより、E_STRICT を除くすべてのエラーが表示されます。

また

あなたのPHPファイルで

error_reporting(E_ALL | E_STRICT);

詳細については、PHP NET http://php.net/manual/en/migrating5.errorrep.phpを参照してください。

于 2012-11-17T06:42:24.283 に答える