Ticket #1775 (closed バグ指摘: 修正済)

Opened 8 years ago

Last modified 8 years ago

モバイルで、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される前に、オートローダが走ることで発生していると思われます。

  1. モバイルアクセス時は、SC_SessionFactory_UseRequest::initSessionにより、セッションの初期化処理が行われる
  2. SC_SessionFactory_UseRequestの219行目付近で、SC_Helper_Mobile_Exがnewされる
  3. オートローダに制御がうつる
  4. SC_ClassAutoloaderの73行目付近で、SC_Helper_Plugin::getSingletonInstance()が呼ばれる
  5. SC_Helper_Plugin::load()が呼ばれる
  6. プラグインのクラスが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

comment:1 Changed 8 years ago by adachi

  • Priority changed from to
  • Description modified (diff)

comment:2 Changed 8 years ago by adachi

  • 修正済み set

r21785:21786 で対応しました。

comment:3 Changed 8 years ago by h_yoshimoto

  • Status changed from new to closed
  • Resolution set to 修正済
Note: See TracTickets for help on using tickets.