id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	modified_flg
1775	モバイルで、SC_Plugin_Baseが読み込まれない不具合	adachi	somebody	"== 概要 ==

モバイル端末からのアクセス時に、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される前に、オートローダが走ることで発生していると思われます。

 1. モバイルアクセス時は、SC_SessionFactory_UseRequest::initSessionにより、セッションの初期化処理が行われる
 1. SC_SessionFactory_UseRequestの219行目付近で、SC_Helper_Mobile_Exがnewされる
 1. オートローダに制御がうつる
 1. SC_ClassAutoloaderの73行目付近で、SC_Helper_Plugin::getSingletonInstance()が呼ばれる
 1. SC_Helper_Plugin::load()が呼ばれる
 1. プラグインのクラスが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へ移動します。"	バグ指摘	closed	高	EC-CUBE2.12.0	フロント	2.12.0 β	修正済			1
