Ticket #574 (closed バグ指摘: 既出)

Opened 12 years ago

Last modified 11 years ago

send_err_mailがSC_Utils_Exが読み込まれる前に呼ばれる事がある。

Reported by: miningbrownie Owned by: somebody
Priority: Milestone: EC-CUBE2.5.0alpha
Component: その他 Version: 2.4.1
Keywords: require_base Cc:
修正済み:

Description

include/module.incを読み込んだときに61行目SC_Query->getColでエラーがあると

send_err_mailが呼ばれるのですが、この段階ではまだ、SC_Utils_Exが読まれてないので、

Fatal Errorになってしまいます。

InnoDBのログファイルに何かしら問題があるとSELECT出来なくなるので、SELECT FROM dtb_module でまずエラーが発生します。 データベース系のエラーなので、仕方がないような気もしますが、出来ればClass not Foundではなく、データベースでエラーが出てますよと出せたら良いなと思います。

SC_Utils_Exを他のクラスに依存させず、先に読み込ませるよう変更するのはいかがでしょうか?

        try{
                throw new Exception;
        }catch(Exception $e){
                echo $e->getTraceAsString();
        }

で無理やり出したStackTrace張っておきます。

#0 /srv/www/data/class/SC_DbConn.php(138): SC_DbConn->send_err_mail(Object(DB_Error), 'SELECT module_c...')
#1 /srv/www/data/class/SC_Query.php(434): SC_DbConn->getCol('SELECT module_c...', 'module_code', Array)
#2 /srv/www/data/include/module.inc(61): SC_Query->getCol('dtb_module', 'module_code')
#3 /srv/www/data/require_base.php(45): require_once('/srv/www/data/i...')
#4 /srv/www/htdocs/require.php(26): require_once('/srv/www/data/r...')
#5 /srv/www/htdocs/index.php(24): require_once('/srv/www/htdocs...')
#6 {main}
Fatal error: Class 'SC_Utils_Ex' not found in /srv/www/data/class/SC_DbConn.php on line 218

opensuse11.1 php5.2.11 mysql 5.0.67

Change History

comment:1 Changed 12 years ago by nanasess

#573 とも関連すると思われますが, #567 でエラーハンドリングの修正を試みています.

エラー画面を表示させる際にも, DB 接続を行うのはナンセンスだと思いますので, set_error_handler で DB 接続に伴わないエラー画面を用意して, DB エラーは trigger_error によってハンドリングするのが良いかなぁと思っています.

もちろん, SC_Utils_Ex は他のクラスに依存しないことも重要だと思います.

comment:2 Changed 11 years ago by nanasess

  • Status changed from new to closed
  • Resolution set to 既出
  • Milestone changed from EC-CUBE2.x.x to EC-CUBE2.5.0

#567 で対応可能と思われますので, こちらは close します

Note: See TracTickets for help on using tickets.