CakePHP : データベース接続設定
作業環境:
- Debian 4.0
- Apache2.2.3
- PHP5.2.0
- MySQL5.0.32
- CakePHP 1.1.19.6305
CakePHP を Web サーバーに配置し確認したところ、「Your database configuration file is not present.」 (データベース構成ファイルは存在していません。)と表示されています。
そこで、最低限必要な以下の作業を行います。
- MySQL にデータベースを作成する。(テーブル等オブジェクトが入る領域)
- MySQL にユーザーを作成する。
- CakePHP のデータベース接続設定を作成する。
MySQL の設定
MySQL にデータベースとユーザーを作成します。
まず、データベースを作成します。
$ mysql -u root -p
mysql>CREATE DATABASE hogedb;
hogedb データベースに対して全ての権限を持つローカルユーザー(user1)を作成します。
mysql>GRANT ALL ON hogedb.* TO user1@localhost IDENTIFIED BY 'passwd';
関連:MySQL - Database の作成と User の作成
データベースの接続設定
解凍した CakePHP の中に「app/config/database.php.default」があります。この database.php.default を雛形にして database.php を作成します。
database.php を作成する方法に bake というツールを使う方法もありますが、CakePHP の構造も把握してみたいので 直接編集します。
$ cp database.php.default database.php
$ vi database.php
var $default = array('driver' => 'mysql', /* 使用するデータベース */
'connect' => 'mysql_connect', /* 接続方法を指定します */
'host' => 'localhost', /* 接続先ホスト */
'login' => 'dbuser', /* データベースのユーザー */
'password' => 'dbpassword', /* パスワード */
'database' => 'bnotebd', /* データベース名 */
'prefix' => ''); /* テーブルの接頭語 */
持続的な接続をしたい場合、connect を’mysql_pconnect’に設定します。
ここまで設定できたらブラウザから参照してみます。次のようなメッセージが表示されれば 接続に成功しています。
おまけ
CakePHP には、bake という雛形を作成してくれるツールが用意されています。この bake を使って データベース接続の設定を行うこともできます。
bake は CakePHP を解凍したディレクトリの「cake/scripts/」にあります。
$ php bake.php
| |__| |_/ |__ |__] |__| |__] |__] |__| |_/ |__
|___ | | | \_ |___ | | | | |__] | | | \_ |___
---------------------------------------------------------------
Bake -app in /home/webadmin/htdocs/hoge/app (y/n)
[y] >
Baking...
---------------------------------------------------------------
Name: app
Path: /home/webadmin/htdocs/hoge/app
---------------------------------------------------------------
Your database configuration was not found. Take a moment to create one:
---------------------------------------------------------------
Database Configuration:
---------------------------------------------------------------
What database driver would you like to use? (mysql/mysqli/mssql/sqlite/postgres/odbc)
[mysql] >