[PHP] CakePHP 2.0 でデータベース設定

高速開発フレームワーク CakePHP CakePHP 2.0

今回はModel使用準備として、データベース接続設定を行う。

条件は初回と同様。
・CakePHP 2.0.6 (webroot は http://localhost/cake2.0.6/)
・XAMPP 1.7.4 (Apache 2.2.17 + PHP 5.3.5 + MySQL 5.5.8)
・OS は Windows 7

PostgreSQLを使いたいがインストールしてまで使いたくはないので我慢してXAMPP同梱のMySqlを使う。
因みにPostgreSQLを使う場合は、extensionのphp_pdo_pgsqlを有効にする必要もある。

XAMPP Control PanelでMySQLを起動して、以下のURLから phpMyAdmin へアクセス。

http://localhost/phpmyadmin/

以下の条件でデータベースを作成した。

データベース名:cakephp_2_0_demo
文字セット:utf8_general_ci
ユーザ名:cakephp
ユーザのパスワード:SPyM2Zrn9amF8w5J

データベースができたら app/Config/database.php を編集する。
DATABASE_CONFIG クラスの$defaultメンバを編集。

// データソース (2.0では’driver’は使われない)
datasource : ‘Database/Mysql’
// 持続的接続(persistent connection)を使うかどうか
persistent : false
// ホスト
host : ‘localhost’
// ポート(デフォルトならブランクでOK)
port : ”
// データベースユーザ
login : ‘cakephp’
// パスワード
password : ‘SPyM2Zrn9amF8w5J’
// データベース名
database : ‘cakephp_2_0_demo’
// PostgreSQLでどのスキーマを使うかを指定
schema : ”
// テーブルの接頭語
prefix : ”
// エンコーディング
encoding : ‘utf8’

$testメンバはいらないから削除。

因みに datasource は
Database/Postgres … PostgreSQL
Database/Mysql … MySQL 4 & 5
Database/Sqlite … SQLite
Database/Sqlserver … Microsoft SQL Server 2005以上
となっている。
app/Model/Datasource ではカスタムしたデータソースが作れるらしい。

app/Config/database.php の編集が終わったら早速接続テストだ。

あらかじめ lib/Cake/View/Pages/home.ctp の処理が使われるようにする。
筆者は lib/Cake/View/Pages/home.ctp を app/View/Pages/home.ctp に上書きコピーした。
CakePHP 2.0 のインストール直後ならば以下のURLにアクセスすればOK。

http://localhost/cake2.0.6/

Cake is NOT able to connect to the database.

と黄色い背景で表示されている場合は、接続に失敗している。

調べてみると以下のエラーが発生していた。

SQLSTATE[28000] [1045] Access denied for user ‘cakephp’@’localhost’ (using password: YES)

どうやらMySQLの設定が上手くいってない模様。

phpMyAdmin だとよくわからないのでSQLを作って投げる。

grant all on cakephp_2_0_demo.* to cakephp@localhost identified by 'SPyM2Zrn9amF8w5J';

そして もう一度接続テスト。

Cake is able to connect to the database.

接続成功!

コメント