Ticket #567 (closed 改善提案: 修正済)

Opened 11 years ago

Last modified 9 years ago

エラーハンドリングの修正及び抽象化

Reported by: nanasess Owned by: nanasess
Priority: Milestone: EC-CUBE2.11.1
Component: フロント Version: 2.4.1
Keywords: Cc:
修正済み: yes

Description

EC-CUBE でエラー画面を表示する場合 SC_Utils::sfDispError() 関数を使用している.

しかし, この関数は, ユーティリティクラスの中で, page パッケージのクラスを呼び出しており, 良い実装とは言えない. また, この関数は内部で exit を呼んでおり, PHPUnit などのユニットテストを実行しようとした場合, スクリプトが停止してしまう.

また, この関数内で呼ばれるエラーページは, 表示する際に DB アクセスを伴う.

本来であれば, set_error_handler() 関数を使用してエラーページの表示を定義し, エラーの出力は trigger_error() 関数で行うのが望ましい.

特に, DB 接続や SQL エラーの場合は, エラーページを表示するまで PHP の実行を停止しない方が良いと思われる. 現在は, SC_DbConn::send_err_mail() 関数が呼ばれ, PHP の実行は停止してしまう.

また, エラーの内容については, デバックモードの場合は画面に表示し, 運用時はログに出力するのが望ましい.

Change History

comment:1 Changed 11 years ago by nanasess

ADOdb の ADODB_Error_Handler() 関数は, set_error_handler() 関数にて定義されたユーザーハンドラ関数の定義に準拠していない.

エラー番号の箇所が RDBMS 種別だったりめちゃくちゃ...

ADOdb のエラーハンドリングを再定義する必要がありそう.

comment:2 Changed 11 years ago by nanasess

  • Status changed from new to assigned
  • Milestone changed from EC-CUBE2.5.0 to EC-CUBE2.4.3

r18500 で version-2_4-dev へコミット. set_error_handler を定義し, SC_DbConn のエラーハンドリングを trigger_error を使用するように修正

comment:3 Changed 11 years ago by nanasess

r18538 で comu-ver2 へコミット. 問題なければ, version-2_4 にもマージしようと思います.

comment:4 Changed 11 years ago by kajiwara

  • Milestone changed from EC-CUBE2.4.3 to EC-CUBE2.4.4

こちらですが、エラー処理の根幹の部分であり、もう少し確認が必要かと思いますので、次期バージョンにマイルストーンを変更させていただきたいと思います。

申し訳ございませんが、よろしくお願いいたします。

comment:5 Changed 10 years ago by nanasess

  • Milestone changed from EC-CUBE2.4.4 to EC-CUBE2.5.0

影響が大きそうですので、 milestone:EC-CUBE2.5.0 へ変更します

comment:6 follow-ups: ↓ 11 ↓ 14 Changed 10 years ago by nanasess

r18500 の変更が原因で, インストーラのDB初期化時に停止してしまう環境がある模様.

  • --enable-zend-multibyte かつ mbstring.encoding_translation = on の環境が怪しい

合わせてインストーラの修正も必要と思われる.

comment:7 Changed 10 years ago by nanasess

  • Priority changed from to

comment:8 Changed 10 years ago by nanasess

r18796 にて, エラーの詳細を LOG_PATH へ出力するよう修正しました. これで随分デバックしやすくなるかと思います.

comment:9 Changed 10 years ago by nanasess

r18800 で追加の修正をしました

comment:10 Changed 10 years ago by nanasess

r18806 PHPエラーが発生した場合にも data/logs/site.log へエラーログを出力するよう修正しました

comment:11 in reply to: ↑ 6 Changed 10 years ago by nanasess

  • Milestone changed from EC-CUBE2.5.0beta to EC-CUBE2.5.1(仮)

nanasess への返信

r18500 の変更が原因で, インストーラのDB初期化時に停止してしまう環境がある模様.

  • --enable-zend-multibyte かつ mbstring.encoding_translation = on の環境が怪しい

合わせてインストーラの修正も必要と思われる.

要確認です.

comment:12 Changed 10 years ago by kotani

  • Priority changed from to
  • 修正済み unset

comment:13 Changed 9 years ago by nanasess

  • Milestone changed from EC-CUBE2.11.1 to EC-CUBE2.11.2

comment:14 in reply to: ↑ 6 Changed 9 years ago by nanasess

  • 修正済み set
  • Milestone changed from EC-CUBE2.11.2 to EC-CUBE2.11.1

nanasess への返信

r18500 の変更が原因で, インストーラのDB初期化時に停止してしまう環境がある模様.

r20824 で修正しました.

comment:15 Changed 9 years ago by kajiwara

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