web-dev-qa-db-ja.com

PHPエラーを沈黙させるにはどうすればよいですか?

DrupalですべてのPHP=エラー、警告、および通知を黙らせる方法はありますか?これらは、develサイトでは便利ですが、セキュリティ上の大きなリスクであり、ライブでサイトの見栄えを悪くします。

私はDrupal 6でadmin/settings/error-reportingのページが停止する可能性があることを知っていますDrupalエラーの画面への書き込みが原因ですが、これはどこにありますかDrupal 7?欠けているようです。

32

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

screenshot

29
kiamlaluno

提案されているように、_Administration » Configuration » Development_(_/admin/config/development/logging_)には、エラーメッセージの無効化displayingの設定がありますが、エラー/通知を完全に無効にしないでください。

これは、Drupal 7がE_ALLを実施するため、syslogに書き込まれ、最近のログで確認できるため)、ウェブサイトのパフォーマンスに影響を及ぼします。

通知を完全に無効にするには、_settings.php_または_php.ini_ファイルに次の行を追加する必要があります。

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

通知とコーディング標準の警告を除いて、すべてのエラーを表示します。

すべてのPHPエラーを沈黙させるには、これはお勧めできません。設定ファイルを追加してみてください。

_error_reporting(0); // Disable all errors.
_

参照: error_reporting()


責任Drupal _E_ALL_ロギングの7つのコアコード(ファイル:_includes/bootstrap.inc_):

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

以下も参照してください。

18
kenorb

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

D8にはこのためのパッチが提案されていますが、現在D7では、管理ページkiamlalunoに示されている3つのエラーマスク(すべて、なし、またはエラーと警告)に制限されています。

4
forest

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

3
Remon

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

drush vset error_level 0

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

2
Matt Fletcher

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

ini_set('error_reporting', 'E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR');
1
Greg Lund-Chaix

そのためのモジュールがあります:

https://www.drupal.org/project/errorlevelpermission

プロジェクトページから:

だからあなたはできる

  • sitebuilderロール(または特別なデバッガロール)を持ち、エラーと通知を表示します
  • 他の人にエラーや通知を見ないようにします。
0
geek-merlin