database.phpの作成とデータベースの用意

広告

CakePHPでデータベースに関する設定を行うdatabase.phpの作成と実際に使用するデータベース側の準備方法について解説します。

1.database.phpの作成
2.設定ファイルの編集
3.使用するデータベースの準備

CakePHPをインストールした後でブラウザから「http://localhost/cake/」へアクセスして下さい。すると表示されたページに次のような表示がされています。

p2-1

Your database configuration file is NOT present.
Rename APP/Config/database.php.default to APP/Config/database.php

またページを最後までスクロールして頂くと次のようにWarningが表示されています。

p2-2

Warningはそれぞれ次のように表示されています。

Warning (2): include_once(C:\pg\Apache\Apache2.2\htdocs\cake\app\Config\database.php) [function.include-once]: failed to open stream: No such file or directory [CORE\Cake\Model\ConnectionManager.php, line 68]
Warning (2): include_once() [function.include]: Failed opening 'C:\pg\Apache\Apache2.2\htdocs\cake\app\Config\database.php' for inclusion (include_path='.;c:\php\includes;c:\php\pear') [CORE\Cake\Model\ConnectionManager.php, line 68]

これは「database.php」が作成されていないために表示されているものです。では「(CakePHPをインストールしたディレクトリ)\app\Config」ディレクトリを見て下さい。

p2-3

「database.php.default」というファイルがあります。このファイルをコピーした上で名前を「database.php」に変更して下さい。

p2-4

ファイルの中身は後で編集を行います。取り合えずこの時点で改めて「http://localhost/cake/」へアクセスして下さい。表示されるメッセージが次のように変わっています。

p2-5

Your database configuration file is present.

Cake is NOT able to connect to the database.

Database connection "Mysql" is missing, or could not be created.

設定ファイルが作成されたのは認識されるようになりました。ただまだ設定を変更しておらずデータベース側の準備もしていませんので別のメッセージが表示されています。

また最後までスクロールして頂くと表示されていたWarningが消えています。

p2-6

では続いて設定を行います。

先程作成した「database.php」ファイルを開いて下さい。このファイルはPHPスクリプトが記述されており、コメント部分を除くと次のように記述されています。

<?php

class DATABASE_CONFIG {

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

	public $test = array(
		'datasource' => 'Database/Mysql',
		'persistent' => false,
		'host' => 'localhost',
		'login' => 'user',
		'password' => 'password',
		'database' => 'test_database_name',
		'prefix' => '',
		//'encoding' => 'utf8',
	);
}

2つの配列が用意されていますが、「default」の方が通常使用するデータベースに関する設定を行うもので、「test」の方はテスト用の設定です。テスト用はしばらく使いそうもないので今回削除しました。

使用するデータベースについてはMySQLの他にSQLite、PostgreSQL、SQL Serverなどが利用できます。使用するデータベース毎に使用する項目が一部異なります。詳しくは「database.php」ファイルに記載されたコメント部分を読んでみて下さい。今回はMySQLを使用するため次のように変更しました。

<?php

class DATABASE_CONFIG {

	public $default = array(
		'datasource' => 'Database/Mysql',
		'persistent' => false,
		'host' => 'localhost',
		'login' => 'cake_user',
		'password' => 'cake_pass',
		'database' => 'cake_db',
		'prefix' => '',
		'encoding' => 'utf8',
	);
}

MySQLが動いているホスト名とデータベース名の他にCakePHPからデータベースにアクセスする時のユーザー名とパスワードを指定します。「persistent」は持続的接続を行うかどうかで今回はfalseにしました。

では最後にMySQLでデータベースやユーザーを作成します。

それではMySQLに接続して下さい。

p2-7

データベースを作成します。今回作成するデータベースの名前は"cake_db"としました(データベース名は任意の名前を指定して頂いて構いません)。

create database cake_db;

p2-8

続いてデータベースを操作するユーザーを作成します。今回はユーザー名を"cake_user"としました。与える権限はcake_dbデータベースに対して「all」です。

grant all on cake_db.* to 'cake_user'@'localhost' identified by 'cake_pass';

p2-9

これでデータベース側の準備も完了です。

次にPHPの設定です。PHPからMySQLへはPDOを使って接続します。その為、php.iniファイルで「extension=php_pdo_mysql.dll」がコメントになっていないことを確認して下さい。(データベースなどの準備が出来ているのに「Database connection "Mysql" is missing, or could not be created.」のような表示されている場合はPDOの設定を確認されてみて下さい)。

では改めて「http://localhost/cake/」へアクセスして下さい。表示されるメッセージが次のように変わっています。

p2-10

Your database configuration file is present.

Cake is able to connect to the database.

上記のように表示されればデータベースに関する準備は全て完了です。

( Written by Tatsuo Ikura )