最近、サーバーをPHP4からPHP5.4にアップグレードしました
ログファイルに多くのエラーを記録している実行中のアプリケーションがあります。それらのほとんどは非推奨のエラー、またはPHPバージョンの変更によるいくつかのマイナーなものです。
現在、すべての問題を修正する時間はありませんが、error_logファイルはわずか数日で10Gに膨れ上がりました。
php.iniでlog_errors=Offを設定しました
他に何ができますか?
php.iniでこれらの警告をオフにするだけです
error_reporting = E_ALL & ~E_DEPRECATED
実行時:
error_reporting(E_ALL & ~E_DEPRECATED);
報告するエラーがある場合は、それによって異なります。エラーを報告したくない場合(悪い考えだと思います)、次のようにします。
error_reporting(0);
スクリプトの上部にあります。
非推奨のエラーのみをオフにしたい場合は、事前定義されたエラー定数を使用してビット単位の演算子を使用する必要があります。私は次のことがうまくいき、あなたが考えていることに合うと信じています:
error_reporting(E_ALL ^ (E_DEPRECATED & E_STRICT & E_NOTICE))
これでも致命的なエラーとキャッチ可能なエラーが残りますが(これら3つのうち2つはスクリプトを停止するため、キャッチしやすくなります)、「スクリプトが古い」タイプのエラーは除外します。
あまり望ましくないエラーを別のエラーログに送信して、後で処理できるようにすることもできますが、メインのエラーログを詰まらせることはありません。興味があれば聞いてください。
E_STRICT
に含まれていないためE_ALL
、上記がオンになります(これは、 ALLE_STRICT
がすべてを意味すると仮定した場合にのみ混乱します(すべてのビットが反転します)。したがって、これら3つのエラーがオフになるという望ましい結果が得られます。
error_reporting(E_ALL ^ (E_DEPRECATED & E_NOTICE))
または、ズールの答えに対するコメントについての私の言葉を食べるために、これもうまくいくでしょう(論理は私の頭を傷つけますが):
error_reporting(E_ALL & ~(E_DEPRECATED | E_STRICT | E_NOTICE))
また、Apacheについて具体的に言及したので、PHPスクリプトの外部では事前定義されたエラー定数を使用できないことを知っておく必要があります。実際のビットマスク値を使用する必要があります。この場合、configファイルまたはhtaccessファイルに以下を追加します。
php_value error_reporting 22519
このシナリオでビット演算がサポートされているドキュメントはどこにも見つかりません。したがって、error_reportingレベルを微調整したい場合は、次のようなphpスクリプトを作成するだけです。
echo E_ALL & ~(E_DEPRECATED | E_STRICT | E_NOTICE);
これは、使用するビットマスクの10進形式を出力します(明らかに、オフにしたいものに一致するように定数を変更します)。
ファイルの先頭に次のものを追加してみてください。
error_reporting(E_NONE);