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.」 (データベース構成ファイルは存在していません。)と表示されています。

CakePHPの初期画面

そこで、最低限必要な以下の作業を行います。

  • 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] >