CakePHP 3.xではComposerが正式にサポートされますが、2.xでもComposerを使ってCaekPHPのコアを管理することができます。
これまでCakePHP 2.xをComposerでインストールする場合、pearレポジトリの定義が必要でしたが、CakePHP 2.4.5 から composer.json が含まれるようになり、また、Packagistに登録されたため、ComposerによるCakePHPのインストールが比較的楽にできるようになりました。
最小セットアップ
とりあえず、以下の手順でインストール可能です。
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
には、よく使いそうなプラグインなどの指定をしていますので、適宜変更してください。