回答:
警告の原因を修正する必要がありますが、を使用してエラーの表示を制御できますerror_reporting()
。警告メッセージをスキップするには、次のようなものを使用できます。
error_reporting(E_ERROR | E_PARSE);
E_ALL ^ E_WARNING
、警告以外のすべてのエラー報告を有効にすることは、への議論のより良い選択のようerror_reporting
です。
関数呼び出しの前に@を付けると、すべてのエラーメッセージを抑制できます。
@yourFunctionHere();
dns_get_record
は警告をスローします。あなたのコードは警告を補うかもしれませんが、それでもそれらを投げます。エラー報告をオフにすると、運用サーバーでは機能しますが、開発サーバーでは機能しません。XMLコンテンツを生成している場合、警告が原因でサーバーが不正な形式のXMLを送信しているため、警告が表示され、ブラウザーがレンダリングされません。時々、それをdevelにしたいのですが、すでに補正した一時的なDNSルックアップの失敗によって引き起こされた何かのためではありません。
Core Phpで、警告メッセージセットerror_reporting(0)を非表示にして、共通のインクルードファイルまたは個別のファイルの上に配置します。
Wordpressで警告と通知を非表示にするには、wp-config.phpファイルに次のコードを追加します
ini_set('log_errors','On');
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
質問に正確に答えているわけではありませんが、状況によってはこれがより良い妥協案だと思います。
サードパーティライブラリのprintf()ステートメントの結果として警告メッセージが表示されました。原因は正確にわかっていました-サードパーティがコードを修正している間の一時的な回避策。警告を抑制すべきではないことに同意しますが、警告メッセージが画面にポップアップ表示されてクライアントに自分の作業を示すことができませんでした。私の解決策:
printf('<div style="display:none">');
...Third-party stuff here...
printf('</div>');
警告は私へのリマインダーとしてまだページのソースにありましたが、クライアントには見えません。
ob_start()
とob_end_clean()
の代わりに。この方法では、データはブラウザに送信されません(ここで送信されます)。
より良い解決策は.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
Error Control Operatorによる回答はすでにありますが、説明が不足しています。@
演算子はすべての式で使用でき、エラーを非表示にします(致命的なエラーを除く)。
@$test['test']; //PHP Notice: Undefined variable: test
@(14/0); // PHP Warning: Division by zero
//This is not working. You can't hide Fatal Errors this way.
@customFuntion(); // PHP Fatal error: Uncaught Error: Call to undefined function customFuntion()
デバッグには、高速で完璧な方法です。ただし、本番環境で使用したり、ローカルバージョンに永続的に含めたりすることは絶対にしないでください。それはあなたに多くの不必要な刺激を与えます。
代わりに検討する必要があります:
1.承認された回答に記載されているエラー報告設定。
error_reporting(E_ERROR | E_PARSE);
またはPHP INI設定から
ini_set('display_errors','Off');
2.例外をキャッチする
try {
$var->method();
} catch (Error $e) {
// Handle error
echo $e->getMessage();
}