web-dev-qa-db-ja.com

PHP 5厳密な標準エラーを無効にする

厳格な標準のエラー報告を無効にするには、先頭にPHPスクリプトを設定する必要があります。

誰かが手伝ってくれる?

172
Manny Calavera

エラー報告を無効にしますか、それともユーザーに表示されないようにしますか?本番サイトでも、エラーを記録することをお勧めします。

# in your PHP code:
ini_set('display_errors', '0');     # don't show any errors...
error_reporting(E_ALL | E_STRICT);  # ...but do log them

それらはあなたの標準的なシステムログに記録されるか、error_logディレクティブを使ってエラーをどこに送りたいのか正確に指定します。

182
Nate

エラーなしの場合.

error_reporting(0);

または厳密ではない

error_reporting(E_ALL ^ E_STRICT);

すべてのエラーをもう一度表示したい場合は、

error_reporting(-1);

90
Tyler Carter

上記のすべての解決策は正しいです。しかし、通常のPHPアプリケーションについて話しているときは、すべてのページにそれらを含める必要があります。これを解決する方法は、ルートフォルダの.htaccessを使うことです。エラーを隠すだけです。 [ファイルに次の行を追加する]

php_flag display_errors off

または

php_value display_errors 0

次に、エラー報告を設定する

php_value error_reporting 30719

30719の値がどのようになったのか疑問に思う場合は、E_ALL(32767)、E_STRICT(2048)は実際には定数であり、(32767 - 2048 = 30719

31
Starx

error_reporting flagのデフォルト値は、php.iniで設定されていなければE_ALL&〜E_NOTICEです。しかし、いくつかのインストール(特に開発環境を対象とするインストール)ではE_ALL | E_STRICTの値としてこのフラグを設定します(これは開発中の推奨値 )場合によっては、特にPHP 5.3以前に開発され、PHP 5.3で定義されたベストプラクティスでまだ更新されていないオープンソースプロジェクトを実行したい場合があります。あなたの開発環境では、おそらくあなたが得ているようないくつかのメッセージを受け取ることに遭遇するでしょう。この状況に対処する最善の方法は、error_reporting flagの値としてE_ALLのみをphp.iniまたはに設定することです。 code(おそらく次のようにweb-rootのindex.phpのようなフロントコントローラにあります。

if(defined('E_STRICT')){
    error_reporting(E_ALL);
}
9

Php.iniを設定します。

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
8
MSS

WordPress

WordPress環境で作業している場合、WordPressはwp-includes/load.phpファイルの関数wp_debug_mode()のエラーレベルを設定します。そのため、この関数が呼び出された後に(gitにチェックインされていないファイルで開発用にのみ)レベルを変更するか、error_reporting()呼び出しを直接変更する必要があります

4

私はきれいで量産対応のソフトウェアに適した答えを見ませんでしたので、ここでそれは行きます:

/*
 * Get current error_reporting value,
 * so that we don't lose preferences set in php.ini and .htaccess
 * and accidently reenable message types disabled in those.
 *
 * If you want to disable e.g. E_STRICT on a global level,
 * use php.ini (or .htaccess for folder-level)
 */
$old_error_reporting = error_reporting();

/*
 * Disable E_STRICT on top of current error_reporting.
 *
 * Note: do NOT use ^ for disabling error message types,
 * as ^ will re-ENABLE the message type if it happens to be disabled already!
 */
error_reporting($old_error_reporting & ~E_STRICT);


// code that should not emit E_STRICT messages goes here


/*
 * Optional, depending on if/what code comes after.
 * Restore old settings.
 */
error_reporting($old_error_reporting);
2
Jay