回答:
エラー報告を無効にしますか、それともユーザーに表示されないようにしますか?本番サイトであっても、通常はエラーをログに記録することをお勧めします。
# 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
エラーは標準のシステムログに記録されるか、またはディレクティブを使用してエラーの移動先を正確に指定します。
php.ini
、PHPコードを変更できない場合など、ファイルにこれらを設定することもできます。
php.ini
か、.htaccess
私のPHPコード内のどこか。
エラーなし。
error_reporting(0);
または厳密ではない
error_reporting(E_ALL ^ E_STRICT);
すべてのエラーを再び表示したい場合は、
error_reporting(-1);
^
1つのタイプのエラーを省略する場合にのみ有効だと思います。追加のタイプをオフにする場合は、E_ALL & ~E_DEPRECATED & ~E_STRICT
フォーマットを使用する必要があります。またはおそらく(E_ALL & ~(E_DEPRECATED | E_STRICT))
フォーマット。
ini_set('error_reporting', E_ALL&~E_STRICT);
でのSTRICTエラーの報告を抑制する>> 5.4 でのSTRICTエラーの報告を抑制するini_set('error_reporting', E_ALL^E_STRICT);
^
(「ではなく」)ではなく(「xor」)を使用すること& ~
は悪い考えであることを指摘したいと思います。たとえば、E_STRICTはE_ALLの一部であり、常に E_ALLの一部で^
あるという仮定に依存します。E_ALLは過去に変更されたため、これは悪いことです(E_STRICTは過去のものではありませんでしたが、現在はPHP 5.4以降です)。仮定が1日失敗すると、破られるだけでなく、実際に想定されていることとは逆のことが行われます。XOR()の機能により、 E_STRICT が有効になります。ただし、E_ALLの現在の値に関係なく、常に E_STRICT が無効になります。したがって、使用する必要があります。^
^
& ~
& ~
上記のソリューションはすべて正しいです。ただし、通常のPHPアプリケーションについて説明する場合、必要なすべてのページにそれらを含める必要があります。これを解決する方法は.htaccess
、ルートフォルダを使用することです。エラーを非表示にするだけです。[次の行の1つをファイルに入れます]
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
)
php_admin_value error_reporting
これを機能させるために使用しました(vhost構成で)。
php.iniで設定されていない場合、error_reportingフラグのデフォルト値はE_ALL&〜E_NOTICEです。ただし、一部のインストール(特に開発環境を対象とするインストール)では、E_ALL | E_STRICTがこのフラグの値として設定されます(これは開発中の推奨値です)。場合によっては、特に、PHP 5.3時代以前に開発され、PHP 5.3で定義されたベストプラクティスでまだ更新されていないオープンソースプロジェクトを開発環境で実行したい場合、おそらくいくつかのあなたが得ているようなメッセージ。この状況に対処する最善の方法は、E_ALLのみをerror_reportingフラグの値として設定することです。php.iniまたはコード内(おそらく次のように、web-root内のindex.phpのようなフロントコントローラー内):
if(defined('E_STRICT')){
error_reporting(E_ALL);
}
ワードプレス
ワードプレス環境で作業している場合、ワードプレスはwp-includes / load.phpファイルのfunctionにエラーレベルを設定しますwp_debug_mode()
。したがって、この関数が呼び出された後でレベルを変更する必要があります(gitにチェックインされていないファイルであるため、開発のみです)、またはerror_reporting()
呼び出しを直接変更する必要があります
クリーンでプロダクション対応のソフトウェアに適した答えが見つからなかったので、次のようにします。
/*
* 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);
E_ALL & ~E_DEPRECATED & ~E_STRICT
プロダクション用に設定することをお勧めします。厳格な標準を無効にすることを提案していることに注意してください。