3

次の php コードは、コンソールに「データ エラー」を出力します。これが発生する理由は既知の問題ですが、エラー メッセージを取り除きたいと思います。

<?php   
    gzuncompress("foo");
?>

PHPでエラーメッセージを抑制する方法についてWebで検索し、次のことを試しましたが、成功しませんでした:

<?php   
    error_reporting(0); 
    ini_set("display_errors",0);
    ob_start(); 
    @gzuncompress("foo");
    ob_end_clean();
?>

どうもありがとうございました!

4

1 に答える 1

2

これは、カスタムエラーハンドラが指定されている可能性があります。

理由:

  1. ob_start()/ ob_end_clean()は時間の無駄です-これは警告メッセージを抑制せず、エコーなどを介して送り出しているコンテンツのみを抑制します。したがって、これらの2行を削除します。

  2. error_reporting(0)で十分です。これは「すべてのエラーをオフにする」ことを示しています。エラーログや画面には表示されません。ただし、カスタムエラーハンドラは引き続き呼び出されます。

  3. 「display_errors」は画面への表示を停止しますが、ログファイルには表示されます。

  4. @もメッセージを抑制します。基本的に、「error_reporting(0)」を一時的に設定します。ただし、cusomエラーハンドラは引き続き呼び出されます。

したがって、これらすべてを回避する唯一のものは、カスタムエラーハンドラです。@でエラーを抑制したり、error_reporting(0)を使用したりしても、それは引き続き呼び出されます。カスタマーエラーハンドラー自体がerror_reporting()を呼び出す必要があり、「0」の場合はエラーが発生しないことを確認する必要があります。おそらく、独自の「バッファを保持し、メッセージを吐き出し、バッファを復元する」コードを持っているため、ob_start()を回避できます。

私が考えることができる唯一の理由:コンソールとwebbrowser / apacheの両方を介して上記のコードを実行したところ、クリーンです。必要に応じて、警告などは表示されません。

于 2012-09-07T05:25:13.043 に答える