Changes between Initial Version and Version 1 of Ticket #1775


Ignore:
Timestamp:
2012/04/25 20:57:50 (9 years ago)
Author:
adachi
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #1775

    • Property Priority changed from to
  • Ticket #1775 – Description

    initial v1  
     1== 概要 == 
     2 
     3モバイル端末からのアクセス時に、SC_Plugin_Baseが見つからずFatalErrorが発生する 
     4 
     5svn.ec-cube.net/open_trac/ticket/1692#comment:26 
     6 
     7== 詳細 == 
     8 
     9'''スタックトレース''' 
     10{{{ 
     11[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 
     12[Wed Apr 25 19:34:04 2012] [error] [client 192.168.56.1] PHP Stack trace: 
     13[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 
     14[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 
     15[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 
     16[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 
     17[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 
     18[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 
     19[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 
     20[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 
     21[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 
     22[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 
     23[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 
     24}}} 
     25 
     26'''発生条件''' 
     27 * プラグインが登録されており、有効であること 
     28 * モバイル端末からのアクセスであること 
     29 
     30'''発生原因''' 
     31 
     32SC_Plugin_Baseがrequireされる前に、オートローダが走ることで発生していると思われます。 
     33 
     34 1. モバイルアクセス時は、SC_SessionFactory_UseRequest::initSessionにより、セッションの初期化処理が行われる 
     35 1. SC_SessionFactory_UseRequestの219行目付近で、SC_Helper_Mobile_Exがnewされる 
     36 1. オートローダに制御がうつる 
     37 1. SC_ClassAutoloaderの73行目付近で、SC_Helper_Plugin::getSingletonInstance()が呼ばれる 
     38 1. SC_Helper_Plugin::load()が呼ばれる 
     39 1. プラグインのクラスがrequireされる→fatal error 
     40 
     41※この時点ではSC_Plugin_Baseはロードされていません。 
     42 
     43※SC_Plugin_Baseは、initSessionが完了したのちにrequireされています(require_base.php48行目) 
     44 
     45'''修正方法''' 
     46 
     47SC_Plugin_Baseをオートローダでrequireできるよう、ファイル位置を変更します 
     48 
     49現状では data/downloads/plugin/SC_Plugin_Base.phpですが、これをdata/class/plugin/SC_Plugin_Base.phpへ移動します。