PHPエラーを抑制するにはどうすればよいですか?


32

DrupalのすべてのPHPエラー、警告、通知を黙らせる方法はありますか?これらは開発サイトでは便利ですが、大きなセキュリティリスクであり、ライブではサイトの外観が悪くなります。

Drupal 6のadmin / settings / error-reportingのページでDrupalが画面にエラーを書き込むのを防ぐことができますが、Drupal 7のどこで見つけることができますか?欠落しているようです。


3
ただし、エラーには非常に重要な役割があることに注意してください。エラーは何かが間違っていることを示しています。それを抑制しても、根本的な問題は解決しません。これは「ロシアの方法」とも呼ばれます。原子力発電所の警報灯が点滅し始めたら、電球を取り除いてください。アラームライトが点滅しなくなりました。問題はありません。
バーク

面白い:)。しかし、私は本番サイトのエラーのみを抑制します。
drupal_stuff_alter

Drupalには、表示するエラーを決定するオプションがあります。表示されないエラーは引き続きデータベースに記録され、admin / reports / dblogに表示されます。
kiamlaluno

@kiamlalunoは、実稼働環境では多少問題ありません(ただし、支払いが失敗したというエラーを提示する方が、クライアントに不確実性を与えるよりも常に優れています)。しかし、私の経験による開発とテストでは、dblogにプッシュされたエラーは無視されます。1時間あたり何百もの通知と警告が記録されているDrupalsitesも例外ではありません。そして、実際の例外とエラーはノイズの中に失われます。最善の方法は、すべての通知を開発者の顔に強く押し込むことです。
バーク

正しいですが、OPは本番サイトでこれらのエラーを隠すことに興味があるようです。(「開発サイトでは有用ですが、大きなセキュリティリスクであり、ライブではサイトが見た目が悪くなります。」を参照してください。)
kiamlaluno

回答:


29

Drupal 7のように、admin / settings / error-reportingで見る前と同じページがadmin / config / development / loggingにあるように、パスが変更されます。

スクリーンショット


1
何らかの理由で、私はこれを行うことができません。[保存]をクリックすると、選択がリセットされます。データベースまたはこれのようなものでこれを手動で変更する方法はありますか?
ニランジャンNラジュ

17

提案されたように、Administration » Configuration » Development(で/admin/config/development/logging)エラーメッセージの表示を無効にする設定を見つけることができますが、エラー/通知を完全に無効にすることはできません。

これは、Drupal 7がE_ALLを実施しているため、それらはまだsyslogに書き込まれているため、Webサイトのパフォーマンスに影響する最近のログで確認できます。

通知を完全に無効にするには、次の行をsettings.phpor php.iniファイルに追加する必要があります。

ini_set('error_reporting', E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);

通知およびコーディング標準の警告を除くすべてのエラーを表示します。

推奨されないすべてのPHPエラーを抑制するには、設定ファイルを追加してみてください:

error_reporting(0); // Disable all errors.

見る: error_reporting()


E_ALLロギング用の責任あるDrupal 7コアコード(ファイル:)includes/bootstrap.inc

// Enforce E_ALL, but allow users to set levels not part of E_ALL.
error_reporting(E_ALL | error_reporting());

こちらもご覧ください:


4

誰もが知っておくと役立つだろうと誰も言及していないことの1つは、Drupal 7はすべてのローカルシステムエラーレポートレベルを無視することです。したがって、Drupalで.htaccessまたはphp.iniを使用してphpエラー報告レベルを設定することはできません。

D8にはこのために提案されたパッチがありますが、現在D7では、kiamlalunoの管理ページで設定された3つのエラーマスク(all、none、errors&warnings)に制限されています。


3

設定は常にadmin / config / development / loggingにあります :)


どうもありがとう!私はまだ緑の通知を生きていたいです。彼らが消えないことを願っています。
drupal_stuff_alter

2

Drushメソッドがそれほど文書化されていない理由はわかりませんが、ビルドスクリプトには次のように記載されています

drush vset error_level 0

...エラーメッセージはログに保存されますが、画面には表示されません。


1

上記のソリューションkenorbに引用符を追加する必要がある場合があります。

ini_set('error_reporting', 'E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR');

これは間違っています-これらは定数であり、引用符で囲まないでください。error_reportingは、整数定数の論理和で構成される整数値です。ここにあるような定数名で構成される文字列設定ではありません。
データシャマン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.