262

私はいくつかのPHPコードを持っています。実行すると、警告メッセージが表示されます。

これらの警告メッセージを削除/抑制/無視するにはどうすればよいですか?

4

13 に答える 13

409

警告の原因を修正する必要がありますが、エラーの可視性は で制御できますerror_reporting()。警告メッセージをスキップするには、次のようなものを使用できます。

error_reporting(E_ERROR | E_PARSE);
于 2010-01-01T00:37:29.543 に答える
133

関数呼び出しの前に@を付けて、すべてのエラー メッセージを非表示にすることができます。

@yourFunctionHere();
于 2010-01-01T00:41:06.467 に答える
52

他のすべてのエラー レポートを有効にしたまま、警告を抑制するには:

error_reporting(E_ALL ^ E_WARNING); 
于 2011-02-11T08:08:19.827 に答える
31

エラーだけでなく警告も表示したくない場合は、

// Turn off all error reporting
error_reporting(0);

エラー報告 - PHP Manual

于 2013-01-22T03:16:23.260 に答える
11

質問に正確に答えているわけではありませんが、状況によってはこれがより良い妥協点だと思います:

サードパーティ ライブラリの printf() ステートメントの結果として、警告メッセージが表示されました。原因が何であるかを正確に知っていました-サードパーティがコードを修正している間の一時的な回避策. 警告を抑制すべきではないことに同意しますが、警告メッセージが画面に表示された状態でクライアントに自分の作業を示すことができませんでした。私の解決策:

printf('<div style="display:none">');
    ...Third-party stuff here...
printf('</div>');

警告は、リマインダーとしてページ ソースに残っていましたが、クライアントには表示されませんでした。

于 2012-12-30T20:03:26.053 に答える
7

より良い解決策は .htaccess の設定だと思います。そうすれば、アプリケーションのコードを変更する必要はありません。Apache2 のディレクティブは次のとおりです。

php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
于 2014-05-10T16:34:06.773 に答える
5

error_reportingを使用して警告を抑制することもできますが、最初にスクリプトを修正することをお勧めします。

方法がわからない場合は、質問を編集して、問題の行と表示されている警告を表示してください。

于 2010-01-01T00:34:26.960 に答える
1

注: これは警告を抑制するためであり、致命的なエラーではありません

@ 演算子を使用できます。これにより、致命的なエラーを除くすべての警告が非表示になりますが、@ 演算子を追加すると、スクリプトの実行時間が長くなることに注意してください。

例えば@function_name();

別の方法は、.ini 構成ファイルを使用して error_reporting セクションを編集することです。以下のように編集すると、引き続きすべてのエラーが表示されますが、スクリプト内の警告は抑制されます。

error_reporting(E_ALL ^ E_WARNING);

ただし、サーバー全体ではなく特定のプロジェクトで警告を抑制する必要がある場合は、以下のコード行で十分です

ini_set('error_reporting', E_ALL ^ E_WARNING);

于 2021-08-20T04:42:28.717 に答える