| | 1 | == 概要 == |
| | 2 | |
| | 3 | モバイル端末からのアクセス時に、SC_Plugin_Baseが見つからずFatalErrorが発生する |
| | 4 | |
| | 5 | svn.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 | |
| | 32 | SC_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 | |
| | 47 | SC_Plugin_Baseをオートローダでrequireできるよう、ファイル位置を変更します |
| | 48 | |
| | 49 | 現状では data/downloads/plugin/SC_Plugin_Base.phpですが、これをdata/class/plugin/SC_Plugin_Base.phpへ移動します。 |