1

最近、サーバーをPHP4からPHP5.4にアップグレードしました

ログファイルに多くのエラーを記録している実行中のアプリケーションがあります。それらのほとんどは非推奨のエラー、またはPHPバージョンの変更によるいくつかのマイナーなものです。

現在、すべての問題を修正する時間はありませんが、error_logファイルはわずか数日で10Gに膨れ上がりました。

php.iniでlog_errors=Offを設定しました

他に何ができますか?

4

3 に答える 3

3

php.iniでこれらの警告をオフにするだけです

error_reporting  = E_ALL & ~E_DEPRECATED

実行時:

error_reporting(E_ALL & ~E_DEPRECATED);
于 2012-05-14T22:51:43.437 に答える
2

報告するエラーがある場合は、それによって異なります。エラーを報告したくない場合(悪い考えだと思います)、次のようにします。

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進形式を出力します(明らかに、オフにしたいものに一致するように定数を変更します)。

于 2012-05-14T22:53:59.813 に答える
0

ファイルの先頭に次のものを追加してみてください。

error_reporting(E_NONE);
于 2012-05-14T22:43:44.927 に答える