引き続きPHPのフレームワークの話題。
今度はとある環境でCakePHP2.0を利用しようとしたお話。
CakePHP1.X系と同じ感じで使おうと思ったら、ちょっと調整が必要になったのでそのときのメモ。
1.DBを紐づけているモデルで「Database connection “Mysql” is missingCake is NOT able to connect to the database.Database connection “Mysql” is missing, or could not be created.」というエラーがでた。
CakePHP2.0からはPDO経由でDBに接続するようになってた。
PHPにPDO各様モジュールをインストールする必要がある。
PDOが入っていても、利用したいDBのドライバが入っていない場合もあるので注意
2.DATABASE_CONFIGでhostにポート番号も設定するとエラーになる。
CakePHP1.X系では以下のような記述が可能だったのだが、CakePHP2.X系からは
Error: SQLSTATE[HY000] [2005] Unknown MySQL server host ’127.0.0.1:3306′ (3) requires a database connection
というエラーが出る。
public $default = array( 'datasource' => 'Database/Mysql' , 'persistent' => false , 'host' => '127.0.0.1:3306', 'login' => 'user', 'password' => 'passwd' , 'database' => 'cakedb' , 'prefix' => '', 'encoding' => 'utf8' , );
ポート指定に対応するためにはこんな感じに変更する。
public $default= array( 'datasource' => 'Database/Mysql' , 'persistent' => false , 'host' => '127.0.0.1', 'port' => '3306', 'login' => 'user', 'password' => 'passwd' , 'database' => 'cakedb' , 'prefix' => '', 'encoding' => 'utf8' , );
3.環境によってDBの接続情報を変える
これはCakePHP1.X系の設定をそのまま持ってこれた。
AppModelで$useDbConfigを上書き
class AppModel extends Model { public function __construct($id = false, $table = null , $ds = null) { if (defined('DEBUG_PREFIX' )) { $this-> useDbConfig = DEBUG_PREFIX; } parent::__construct($id, $table, $ds); } }