ご無沙汰のFuelPHP
FuelPHPご無沙汰してます。
ブログの更新もご無沙汰していました。
最近FuelPHPを使ったプロジェクトが一段落し、落ち着いていたらなんと!
本番にもろエラーが出力されてましたwwww
忘れてました!
FuelPHPは何もしないと、エラーを優しく丁寧に教えてくれるので、そのまま出力してリリースすると結構とんでもないことになります。
あああぁ、やっちまった/( ^o^ )\ なんてこったい
ということでエラーを出ないように調整。
今回はPDO使ってDBを参照しているんだけども、PHPでのエラー出力は、例外処理の出力と違う!ってわけで、
PHPのエラー出力を制御しても、DB系のエラーでます!
例えば、変なクエリー「 WHERE id in (1,2,)」こんなのが流れてきた場合、PHPのエラーを出力しないようにしてもちゃんと教えてくれます!優しいです!!!てか、当たり前だ!!気づけよもっと前に!
って気づいた後に、あわわわわわわってなって対策しました。
■PHPエラーが出ないようにする
こっちは簡単。
publicのindex.phpに
error_reporting(0); ini_set('display_errors', 0);
を追記これでPHP系のエラーはでないはず、、、
■SQLエラーがでないようにする
PDOの場合、DBのエラーは,Database_Exceptionで管理されているので、こいつを拡張する。
Bootstrapに
Autoloader::add_classes(array( // Add classes you want to override here // Example: 'View' => APPPATH.'classes/view.php', 'Database_Exception' => APPPATH.'classes/exception.php',//追記 ));
「fuel\app\classes」直下にexception.phpというファイルを作成
class Database_Exception extends Fuel\Core\Database_Exception { public function __construct($message="" , $code="", $e="") { \Log::error('SQL ERROR',$message . " " . $code . " " . $e); exit; } }
と記述。
例外処理が出た場合にログ出力してexitするようにした。
ログは「fuel\app\logs\年月日」に出るよ
てか、即席なのでこんなんでいいのか不安、、、いい方法教えて下さい。