CakePHP 3.xではComposerが正式にサポートされますが、2.xでもComposerを使ってCaekPHPのコアを管理することができます。
これまでCakePHP 2.xをComposerでインストールする場合、pearレポジトリの定義が必要でしたが、CakePHP 2.4.5 から composer.json が含まれるようになり、また、Packagistに登録されたため、ComposerによるCakePHPのインストールが比較的楽にできるようになりました。
[ad#co-1]
最小セットアップ
とりあえず、以下の手順でインストール可能です。curl -sS https://getcomposer.org/installer | php
php composer.phar require "cakephp/cakephp":"~2.4"
これで、vendor/cakephp/cakephp 配下にCakePHPの一式がインストールされます。
次にプロジェクト作成します。cakeコマンドは、vendor/bin/cakeとしてインストールされていますので、これをつかってbake projectを行います。
例によって、appという名前のプロジェクトを作ります。
vendor/bin/cake bake project app
これで、 app ディレクトリに、プロジェクトのひな形が作成されます。
そして、app/webrootをドキュメントルートに指定して、ブラウザから参照すればいつもの画面が表示されているはずです。
ただし。。。
CAKE_CORE_INCLUDE_PATHの指定が絶対パスとなっているため、ローカル環境で開発したものをサーバーに持っていくと動かないといったことになります。これを回避するには、app/webroot/index.php, app/webroot/test.php, app/Console/cake.php計3ファイルのパスを書き換えて相対指定とする必要があります。
また、このままではComposerのautoloaderを読み込んでいないため、autoloaderの恩恵を受けることができません。そこでapp/Config/bootstrap.phpの最後に以下を追記してautoloaderを読み込みます。
// Load composer autoload.
require ROOT . '/vendor/autoload.php';
// CakePHPのオートローダーを一旦解除してから再読み込み、これをしないと正しく読み込めない
// See https://github.com/composer/composer/commit/c80cb76b9b5082ecc3e5b53b1050f76bb27b127b
spl_autoload_unregister(array('App', 'load'));
spl_autoload_register(array('App', 'load'), true, true);
Composerでインストールする場合、以上のような調整が必要です。
面倒くさいあなたへ
ひな形となるcomposer.jsonと、bake用スクリプトを用意しました。
https://gist.github.com/nojimage/7022740
上記のcomposer.jsonと bake-composer.sh をダウンロードして、プロジェクトディレクトリに配置し、
php composer.phar install
chmod +x ./bake-composer.sh; ./bake-composer.sh
で、bake project、CAKE_CORE_INCLUDE_PATHの書き換え、bootstrap.phpへの追記、app/tmpの書き込み権限付与が完了します。
また、composer.jsonには、よく使いそうなプラグインなどの指定をしていますので、適宜変更してください。
