web-dev-qa-db-ja.com

PHPのログレベルのベストプラクティスは何ですか?

Cでプログラミングするとき、警告の多くまたはすべてをオンにし、警告を無視しないようにというアドバイスをよく得ます。

PHPでも同じことが言えますか、PHPログですべての警告を有効にする必要がありますか?

PHPのデフォルトのログレベルは、通知を除外します。 PHP 5.2の場合は_E_ALL & ~E_NOTICE_、5.3の場合は_E_ALL & ~E_NOTICE & ~E_STRICT_、5.4の場合は_E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED_です。

コードだけで作業している場合は、コードを_E_ALL_に設定することをお勧めします。通知を確認することで、デバッグ時間を大幅に節約でき、非推奨と互換性の通知を確認することで、新しいPHPへのアップグレードに伴う多くの手間を節約できます。

ただし、サードパーティのコードを使用している場合、すべての通知(_E_NOTICE_、_E_STRICT_および_E_DEPRECATED_)をオンにすると、古いコードの多くがスパムを送信する可能性がありますコードの数行ごとに通知を生成します。

5
vartec

はい、もちろん。特にゼロから始める場合、なぜ地球上でできるだけ多くの問題や潜在的な問題を自動的にキャッチしたくないのですか?

1
James McLeod

PHPで警告を有効にすると、プログラマーが追加のEdgeを提供して、プログラマーがコーディングをどのページや行などで間違っているのかを知ることができます。複数のファイルが含まれている場合は、できるだけ多くのファイルをチェックする必要があるため、プログラマの観点からそれを有効にすることをお勧めします。

1
sree

プロジェクトの開発段階では、 "E_ALL | E_STRICT"をdisplay_errorsもオンにして、すべての可能な警告/エラー/通知などを取得できるようにします。 $ user対$ usrの単純なラプサスは、後で一連の問題を作成する可能性があり、PHPこの設定がない場合、ビルドの問題は発生しませんが、壊れたビジネスロジックが生成されます。

本番モードでは、これらもオンにすることをお勧めしますが、display_errorsフラグを無効にします。独自のカスタムエラーハンドラーを作成して、そこにログを書き込んだり、Apacheエラーログを使用してそれらを見つけたりすることができます(必要なコンテキストを書き留めることができるため、カスタムエラーハンドラーの方が優れています)。

1
Miro Svrtan