Ticket #1775 (closed バグ指摘: 修正済)
モバイルで、SC_Plugin_Baseが読み込まれない不具合
Reported by: | adachi | Owned by: | somebody |
---|---|---|---|
Priority: | 高 | Milestone: | EC-CUBE2.12.0 |
Component: | フロント | Version: | 2.12.0 β |
Keywords: | Cc: | ||
修正済み: | yes |
Description (last modified by adachi) (diff)
概要
モバイル端末からのアクセス時に、SC_Plugin_Baseが見つからずFatalErrorが発生する
svn.ec-cube.net/open_trac/ticket/1692#comment:26
詳細
スタックトレース
[Wed Apr 25 19:34:04 2012] [error] [client 192.168.56.1] PHP Fatal error: Class 'SC_Plugin_Base' not found in /mnt/NetBeans/cube-2.12/data/downloads/plugin/DetailFacebookComment/DetailFacebookComment.php on line 5 [Wed Apr 25 19:34:04 2012] [error] [client 192.168.56.1] PHP Stack trace: [Wed Apr 25 19:34:04 2012] [error] [client 192.168.56.1] PHP 1. {main}() /mnt/NetBeans/cube-2.12/html/index.php:0 [Wed Apr 25 19:34:04 2012] [error] [client 192.168.56.1] PHP 2. require_once() /mnt/NetBeans/cube-2.12/html/index.php:24 [Wed Apr 25 19:34:04 2012] [error] [client 192.168.56.1] PHP 3. require_once() /mnt/NetBeans/cube-2.12/html/require.php:35 [Wed Apr 25 19:34:04 2012] [error] [client 192.168.56.1] PHP 4. SC_SessionFactory_UseRequest->initSession() /mnt/NetBeans/cube-2.12/data/require_base.php:50 [Wed Apr 25 19:34:04 2012] [error] [client 192.168.56.1] PHP 5. SC_SessionFactory_UseRequest->validateSession() /mnt/NetBeans/cube-2.12/data/class/sessionfactory/SC_SessionFactory_UseRequest.php:210 [Wed Apr 25 19:34:04 2012] [error] [client 192.168.56.1] PHP 6. LC_UseRequest_State->validateSessionData() /mnt/NetBeans/cube-2.12/data/class/sessionfactory/SC_SessionFactory_UseRequest.php:144 [Wed Apr 25 19:34:04 2012] [error] [client 192.168.56.1] PHP 7. LC_UseRequest_State_Mobile->validateModel() /mnt/NetBeans/cube-2.12/data/class/sessionfactory/SC_SessionFactory_UseRequest.php:384 [Wed Apr 25 19:34:04 2012] [error] [client 192.168.56.1] PHP 8. SC_ClassAutoloader::autoload() /mnt/NetBeans/cube-2.12/data/class/sessionfactory/SC_SessionFactory_UseRequest.php:0 [Wed Apr 25 19:34:04 2012] [error] [client 192.168.56.1] PHP 9. SC_Helper_Plugin::getSingletonInstance() /mnt/NetBeans/cube-2.12/data/class/SC_ClassAutoloader.php:73 [Wed Apr 25 19:34:04 2012] [error] [client 192.168.56.1] PHP 10. SC_Helper_Plugin->load() /mnt/NetBeans/cube-2.12/data/class/helper/SC_Helper_Plugin.php:83 [Wed Apr 25 19:34:04 2012] [error] [client 192.168.56.1] PHP 11. require_once() /mnt/NetBeans/cube-2.12/data/class/helper/SC_Helper_Plugin.php:59
発生条件
- プラグインが登録されており、有効であること
- モバイル端末からのアクセスであること
発生原因
SC_Plugin_Baseがrequireされる前に、オートローダが走ることで発生していると思われます。
- モバイルアクセス時は、SC_SessionFactory_UseRequest::initSessionにより、セッションの初期化処理が行われる
- SC_SessionFactory_UseRequestの219行目付近で、SC_Helper_Mobile_Exがnewされる
- オートローダに制御がうつる
- SC_ClassAutoloaderの73行目付近で、SC_Helper_Plugin::getSingletonInstance()が呼ばれる
- SC_Helper_Plugin::load()が呼ばれる
- プラグインのクラスがrequireされる→fatal error
※この時点ではSC_Plugin_Baseはロードされていません。
※SC_Plugin_Baseは、initSessionが完了したのちにrequireされています(require_base.php48行目)
修正方法
SC_Plugin_Baseをオートローダでrequireできるよう、ファイル位置を変更します
現状では data/downloads/plugin/SC_Plugin_Base.phpですが、これをdata/class/plugin/SC_Plugin_Base.phpへ移動します。
Change History
Note: See
TracTickets for help on using
tickets.