はじめに
一般的なCakePHP環境構築手順として、CakePHPのzipファイルをダウンロード、解凍し、Apacheのドキュメントルート配下に配置するといった手順だと思います。ここでは、上記とは異なりComposerを使ってCakePHPの環境を構築していきます。
今回使用するミドルウェア・パッケージ
- Xampp(PHP/Apache/MySQL)
- Composer
Xamppのインストール
PHP、Apache、DBサーバをインストールするため、All in OneでインストールできるXamppをインストールします。インストール完了したら、ApacheとMySQLを起動しておきましょう。既にこれらの環境がある場合は読み飛ばしてください。
一応、私が作った手順のリンクです。
MySQLのDB作成
MySQLのDBも作成しておきましょう。すでに作成済みであれば、読み飛ばしてください。MySQL Workbench等のツールを使ってSQLを発行し、DBを作成しましょう。ここでは「sampledb」というDBを作成します。
create database sampledb
Apacheのドキュメントルートの変更
Apacheのドキュメントルート配下に、CakePHPとCakePHPで作成したAPPプロジェクトを配置する想定です。変更の必要がない場合やXamppインストールしていてデフォルト(xampp\htdocs)のままで良い場合は、読み飛ばしてください。
「httpd.conf」ファイルの「DocumentRoot」の箇所をドキュメントルートにしたいディレクトリに書き換えます。 ここでは"C:/workspace"に設定します。
...
...
DocumentRoot "C:/workspace"
<Directory "C:/workspace">
...
</Directory>
...
...
Composerのインストール
Composerをインストールしてきいきます。下記リンクの手順でインストールしましょう。
CakePHPのインストール
ドキュメントルート配下にCakePHPをインストールします。まず、ドキュメントルート直下にcomposer.jsonファイルを作成します。
{
"name": "example-app",
"repositories": [
{
"type": "pear",
"url": "http://pear.cakephp.org"
}
],
"require": {
"cakephp/cakephp": "2.5.*"
},
"config": {
"vendor-dir": "Vendor/"
}
}
インストールを行います。
コンテキストメニュー(右クリックメニュー)で利用できる場合は、composer.jsonをクリック選択した状態で右クリックで「Composer Install」を選択。
コンテキストメニュー(右クリックメニュー)で利用できない場合は、コマンドプロンプトを起動し、composer.jsonを保存したディレクトリに移動(cd)して次のコマンドを実行します。
composer install
下記にインストールされます。
----------------------------------------------
<ドキュメントルート配下>(C:\workspace)
└ Vendeor/
├ bin/
├ cakephp/ ← CakePHPです。
├ composer/
└ autoload.php
----------------------------------------------
これでCakePHPのインストールは終了です。
続いてプロジェクトを作成していきます。
Bakeを実行してプロジェクトを作成
コマンドプロンプトでプロジェクトのルートディレクトリをカレントディレクトリに設定します。
cd /d <プロジェクトのルートディレクトリ>
【例】cd \d C:\workspace
コマンドプロンプトでbakeを実行します。下記コマンドを実行してください。ここではsampleプロジェクトを生成します。
.\Vendor\bin\cake bake project C:\workspace\sample
もしbashがないって言われたらcake.batを下記のように書き換えてください。
修正前: bash "%BIN_TARGET%" %*
修正後: cmd /C "%BIN_TARGET%" %*
CAKE_CORE_INCLUDE_PATHの設定
デフォルトでは、 bake は CAKE_CORE_INCLUDE_PATH をハードコードするようになっています。 アプリケーションの移植性を高めるためには、 webroot/index.php を修正し、 CAKE_CORE_INCLUDE_PATH を相対パスに変更します。
define(
'CAKE_CORE_INCLUDE_PATH',
ROOT . DS . 'Vendor' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib'
);
ROOT -- アプリケーションのディレクトリパス
DebugKitプラグイン等をインストール
<ドキュメントルート配下>(C:\workspace)/Vendor/cakephp/cakephp/にあるcomposer.jsonファイルをコピーしてプロジェクト配下(C:\workspace\sample)にペーストします。そのペーストしたcomposer.jsonファイルを「composer install」します。
- 右クリックで「Composer Install」or コマンドプロンプトで
composer install
実行
{
"name": "cakephp/cakephp",
"description": "The CakePHP framework",
"type": "library",
"keywords": ["framework"],
"homepage": "http://cakephp.org",
"license": "MIT",
"authors": [
{
"name": "CakePHP Community",
"homepage": "https://github.com/cakephp/cakephp/graphs/contributors"
}
],
"support": {
"issues": "https://github.com/cakephp/cakephp/issues",
"forum": "http://stackoverflow.com/tags/cakephp",
"irc": "irc://irc.freenode.org/cakephp",
"source": "https://github.com/cakephp/cakephp"
},
"require": {
"php": ">=5.2.8",
"ext-mcrypt": "*"
},
"require-dev": {
"phpunit/phpunit": "3.7.*",
"cakephp/debug_kit" : "2.2.*"
},
"bin": [
"lib/Cake/Console/cake"
]
}
実行後、プロジェクト直下の「Plugin」「Vendor」ディレクトリに「DebugKit」や「phpunit」がインストールされています。
オートローダー競合の問題解消
composerオートローダーとcakephpのオートローダーが競合するたConfig/bootstrap.php のコードの先頭に次の行を追加して、問題を回避します。
// composerのautoloadを読み込み
require ROOT . '/Vendor/autoload.php';
// CakePHPのオートローダーをいったん削除し、composerより先に評価されるように先頭に追加する
// https://github.com/composer/composer/commit/c80cb76b9b5082ecc3e5b53b1050f76bb27b127b を参照
spl_autoload_unregister(array('App', 'load'));
spl_autoload_register(array('App', 'load'), true, true);
CakePlugin::loadAll();
DB設定ファイル
Configディレクトリ配下にdatabase.php.defaultがあるので、同ディレクトリでコピペして「database.php」ファイルを作成し、中身を参照するDBの設定に書き換えます。
....
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => '',
'database' => 'sampledb',
'prefix' => '',
'encoding' => 'utf8',
);
....
....
確認
下記URLにアクセスして確認する。
【例】http://localhost:8888/sample
参考
以上。