@Stennie が言及しているように、これは後のバージョンのドライバーで修正されています: https://jira.mongodb.org/browse/PHP-431
試してアップグレードしてください。
また、これは Windows ドライバーにのみ存在し、v1.2.1 以降にのみ発生し始めます。その JIRA を作った人も私のアドバイスで 1.2.1 を試しましたが、彼はそれらE_NOTICE
の s を得られなかったので、私はそれを知っています。その JIRA を実際にトリガーした会話をしたことを覚えています :)。
他のエラーとは異なり、これらのエラーを で「隠す」べきではないと思いますE_ALL & ~E_NOTICE
。E_NOTICE を非表示にすることを決定した人は誰もいませんが、一般的なコンセンサスは、それが最善ではないということです。もちろん、MongoDB 拡張機能に関するすべてのデバッグ情報でログがいっぱいになるのは望ましくありません。その代わりに、MongoDB 拡張機能は (ご想像のとおり) サイレントにする必要があります。
E_NOTICE を非表示にしないもう 1 つの理由は、PHP の新しいバージョンの php.ini のためです。
; error_reporting
; Default Value: E_ALL & ~E_NOTICE
; Development Value: E_ALL | E_STRICT
; Production Value: E_ALL & ~E_DEPRECATED
デフォルトでは、PHP は実際には Production Value 用にインストールされます (私の場合と同様)。PHP エラー レポートのデフォルトは次のとおりです。
E_ALL & ~E_DEPRECATED
これは、AWS とローカルの Ubuntu サーバー 12.04 の両方で error_reporting に設定した値です。インストールして以来、値を変更していません。レポとソースの両方から PHP をインストールすることで得られるデフォルト値は次のとおりです。
error_reporting = E_ALL & ~E_DEPRECATED
したがって、以降の PHP バージョン (およびおそらく将来のバージョン) の本番用に推奨されるデフォルト設定は、実際には を示してE_NOTICE
います。
編集:反対票を投じるのは説明する気ですか?私は基本的に@Stennieと同じ答えを出しましたが、なぜ反対票を投じるのでしょうか?
この回答と@Stennieの回答に対するコメントの会話を実際に考慮して回答を編集したので、回答がより理にかなっています。