CakePHP2.1でMySQL接続

ちょっとハマッたのでメモ。

CakePHPのセット

$ chmod -R 777 app/tmp/
$ vi app/Config/core.php

Configure::write('Security.salt', 'new Security.salt');

$ vi app/Config/core.php

Configure::write('Security.cipherSeed', 'new Security.cipherSeed');

$ cp app/Config/database.php.default app/Config/database.php
$ vi app/Config/database.php

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'letitride',
    'password' => '********',
    'database' => 'mydb',
    'prefix' => '',
    //'encoding' => 'utf8',
);

を編集。ブラウザから確認。。。

Database connection "Mysql" is missing

Cake is NOT able to connect to the database.
Database connection "Mysql" is missing, or could not be created.

のエラーが。。。

ID / PASS database名共に誤りはない。。。
試しにpostgreSQLにつないで見ると、正常に繋がる。

PDO、入ってるはずだけどな。。。
# php -i|grep PDO

PDO
PDO support => enabled
PDO drivers => pgsql, sqlite
PDO Driver for PostgreSQL => enabled
PDO Driver for SQLite 3.x => enabled

Oh...

PDO MySQL 拡張モジュールをインストール

# yum --enablerepo=remi install mysql-devel
# pecl install pdo_mysql
# vi /etc/php.d/pdo.ini

extension=pdo.so
extension=pdo_mysql.so

# /etc/init.d/httpd reload
# php -i|grep PDO

PDO
PDO support => enabled
PDO drivers => mysql, pgsql, sqlite
PDO Driver for MySQL, client library version => 5.5.22
PDO Driver for PostgreSQL => enabled
PDO Driver for SQLite 3.x => enabled
無事、つながりました〜


まとめ
  • Cake2.0 からPDOが必要。
  • 先ずはPDO入っているか確認
  • PDOが入っていてもmysqlドライバが入ってない可能性あり