CakePHP2 のインストール内容
- CakePHP とプラグイン、PHPUnit をインストールする
- プラグインをいくつかインストールするが、有効にするのは DebugKit のみ
- DB名:cake4db、ユーザ名:cake4user、パスワード:cake4pass、文字コード:utf8
- ウェブサーバのドキュメントルートは /var/www/html/
- CakePHP をインストールするプロジェクトのルートディレクトリは /var/www/html/cake4/
- http://IPアドレス/cake4/ でアプリトップ、 http://IPアドレス/cake4/test.php でテストページトップへアクセス
データベースを作成
mysql -u root -p
MySQL にログインしましたので、DB、ユーザ、ユーザにDBへの権限を作成します。
CREATE DATABASE cake4db DEFAULT CHARACTER SET utf8; GRANT ALL ON cake4db.* TO cake4user IDENTIFIED BY 'cake4pass'; FLUSH PRIVILEGES;
終わりましたら control + D などでログアウトしてくださいまし。
Composer のインストール
準備
プロジェクトのルートディレクトリを作成し、移動
mkdir -p /var/www/html/cake4 cd /var/www/html/cake4/
CakePHP とプラグインの依存関係を記述したファイル作成
vim composer.json
次のページをベースとしています。
{ "name": "example-app", "repositories": [ { "type": "pear", "url": "http://pear.cakephp.org" } ], "require": { "cakephp/cakephp": ">=2.4.9", "cakephp/debug_kit": "2.2.*@dev", "cakedc/search": "dev-master", "slywalker/boost_cake": "*", "phpunit/phpunit": "3.7.*" }, "config": { "vendor-dir": "Vendor/" } }
それぞれのパッケージにはバージョンがついています。時間が経つと古くなってしまいますから、ページを確認して修正する必要があるかもしれませんわ。
- cakephp/cakephp – Packagist
- cakephp/debug_kit – Packagist
- cakedc/search – Packagist
- slywalker/boost_cake – Packagist
- phpunit/phpunit – Packagist
なお、PHPUnit のみ、あえてバージョンの低い 3.7 としております。これわわざとで、最新の PHPUnit ですと正常に動かないためですわ。公式ドキュメントでも案内されていますの。
PHPUnit4 はCakePHPのユニットテスト機能と互換性がありません。
Composer インストール
curl -s http://getcomposer.org/installer | php
CakePHP とプラグインをインストール。パス設定の修正。データベース設定
インストール
php composer.phar install
プロジェクトを bake。コマンドで現在の場所をフルパスで指定してもよいのですけれども、$PWD で同じことができますの。こちらの方が、楽ですの♪
Vendor/bin/cake bake project $PWD
パス設定の修正
CAKE_CORE_INCLUDE_PATH を相対パスへ修正
vim webroot/index.php
プロジェクトのルートディレクトリまでを ROOT . DS . APP_DIR に置換
define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . APP_DIR . DS . 'Vendor' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib');
同様の修正を行う
vim webroot/test.php
データベース設定
database.php を bake
Console/cake bake db_config
DebugKit とセッションコンポーネントの有効化、それとオートローダーを設定
プラグインのロードとオートローダーの設定
vim Config/bootstrap.php
本番環境でしたらひとつひとつ指定したほうが良いのでしょうけれども、開発環境ですので全部まとめてばーんとロードしてしまいます。
(オートローダーの設定部分は2014年10月23日追記)また、その直後にcomposerのオートローダーで起こる問題を回避するためのコードを追加します。オートローダーで起こる問題を回避、、、これは具体的には bake したときに PHPUnit が見つからないがとにかくテストコード生成するか?というエラーを回避できます。
CakePlugin::loadAll(); // composerのautoloadを読み込み require APP . '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);
コンポーネントで指定
vim Controller/AppController.php
bake するときに、セッションコンポーネントが無いと Fatal エラーとなりますので、Session も含めています。
public $components = array( 'DebugKit.Toolbar', 'Session' );
以上で完了です!ウェブブラウザからアクセスして、データベースや DebugKit が動いていることを確認してくださいまし。
おわりに、参考ページ
特に、SLYWALKER さまのページが参考になりました。bake project 時の、$PWD など、初めて知ったことがありましたの。大変助かりました、ありがとう存じます。
ただ、未だにわからないこともございます。
- Console/cake.php のどこをどう修正すればよいのかしら?
- 応用インストール ページで「composerで他のライブラリをインストールしている場合は、 オートローダーを設定してcomposerのオートローダーで起こる問題を回避してください。 Config/bootstrap.php ファイルに次の行を追加します:」とありますけれども、役に立つシーンがわかりませんので入れておりません。どのようなときに役に立つのかしら?
→ 平成26年10月23日追記。オートローダーの設定で解決いたしました。 - bake してモデルなどを作成しますと、PHPUnit がインストールされていないが、とにかくテストコードを作成しますか?と聞かれました。PHPUnit は入れましたし、テストページは表示できましたしそこからテストも動きましたのに、、、どうしたのかしら?
→ 平成26年10月23日追記。オートローダーの設定で解決いたしました。
どうやって調べましょうかしらね。。。← 2014年10月23日追記で解決しました♪次のページが参考になりました♪やったぜ!
以上です。