Bug(バグ) #1936
完了
opAnonymousMember クラスにStrict Standardsエラーが含まれている
Youichi Kimura さんが13年以上前に追加.
約9年前に更新.
説明
error_reporting に E_STRICT を設定している環境において、以下のエラーが出力される場合があります。
PHP Strict Standards: Declaration of opAnonymousMember::getConfig() should be compatible with that of Member::getConfig() in /home/upsilon/git/openpne3/sqlite/lib/user/opAnonymousMember.class.php on line 158
Strict Standards: Declaration of opAnonymousMember::getConfig() should be compatible with that of Member::getConfig() in /home/upsilon/git/openpne3/sqlite/lib/user/opAnonymousMember.class.php on line 158
PHP Strict Standards: Declaration of opAnonymousMember::delete() should be compatible with that of Member::delete() in /home/upsilon/git/openpne3/sqlite/lib/user/opAnonymousMember.class.php on line 158
Strict Standards: Declaration of opAnonymousMember::delete() should be compatible with that of Member::delete() in /home/upsilon/git/openpne3/sqlite/lib/user/opAnonymousMember.class.php on line 158
PHP Strict Standards: Declaration of opAnonymousMember::save() should be compatible with that of opDoctrineRecord::save() in /home/upsilon/git/openpne3/sqlite/lib/user/opAnonymousMember.class.php on line 158
Strict Standards: Declaration of opAnonymousMember::save() should be compatible with that of opDoctrineRecord::save() in /home/upsilon/git/openpne3/sqlite/lib/user/opAnonymousMember.class.php on line 158
関連するチケット
1 (0件未完了 — 1件完了)
- 担当者 を Youichi Kimura にセット
- ステータス を New(新規) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
- 対象バージョン を OpenPNE 3.7.0 にセット
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
- 3.6 で発生するか を Yes にセット
レビューOKです。
説明のフォーマット統一と、バックポートの作成をお願いします。
- 優先度 を Normal(通常) から High(高め) に変更
テスターの方へ
この現象を再現させるには、「(1) 未ログイン状態で」「(2) セッションの情報からメンバーを取得しようとしていて」「(3) error_reporting に E_STRICT が含まれる」状況を作り出す必要があります。
具体的な再現方法について調査したところ、apps/pc_frontend/config/settings.yml や apps/mobile_frontend/config/settings.yml、 apps/pc_backend/config/settings.yml の dev 環境設定において、 error_reporting に E_STRICT が含まれていないことが分かりました。つまり、これらのアプリケーションでは (1) と (2) を満たすことはあっても (3) は満たされません。
そのため、 E_STRICT が設定されているアプリケーションでこの現象を再現させるしかありません。設定ファイルを見る限りでは、 apps/api/config/settings.yml と apps/mobile_mail_frontend/config/settings.yml が該当します。しかし、ざっと見てみたところ、これらのアプリケーションでセッションからメンバーを取得しようとしている場面はなさそうでした。従って、 (3) は満たしますが (1) と (2) は満たさないように見えます。(ただし、これについては調査に漏れがある可能性はあります)
ソースコードに手を入れてよいのであれば、 apps/pc_frontend/config/settings.yml の error_reporting の記述を E_ALL | E_STRICT になるようにすることで(つまり (3) の条件を満たすようにすることで)、おそらくこの現象を発生させることができます(が、 PEAR ライブラリによって発生する Strict standards エラーも大量に出ます。現状のエラーレベルに E_STRICT が含まれていないのは、おそらくこれを抑止する目的があったのでしょう)。
ソースコードに手を入れずに再現させる方法は仮に存在したとしてもちょっと思いつきません。オリジナルの修正者の Youichi Kimura さんがそのようなケースを把握している可能性はありますが、 6 ヶ月前のことですし、覚えていらっしゃらないか、現時点の OpenPNE のソースコードでは(他の要因によって)再現しなくなっているということも考えられます。
当チケット報告者の木村です。
このエラーが発生した具体的な状況は、
- /etc/php5/cli/php.ini と apps/pc_frontend/config/settings.yml に
E_ALL | E_STRICT
を設定した上で
- functional テストを実行した (ブラウザでの閲覧でも再現可?)
という状態でした。
チケット作成時はおそらく apps/pc_frontend/config/settings.yml の変更を見落としていたため説明に書かれていませんでしたが、実際にはここで指定した E_ALL | E_STRICT
が適用されたのだと思います。
手元の環境 (f6399e4b を取り消した状態) では 2 で test/functional/pc_frontend/memberActionsTest.php を使用したところ同様のエラーが発生しています。
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
- 3.8 で発生するか を Unknown (未調査) にセット
他の形式にエクスポート: Atom
PDF