CakePHP 2.xをComposerでインストールする

標準

logo-composer-transparent

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.jsonbake-composer.sh をダウンロードして、プロジェクトディレクトリに配置し、

php composer.phar install
chmod +x ./bake-composer.sh; ./bake-composer.sh

で、bake projectCAKE_CORE_INCLUDE_PATHの書き換え、bootstrap.phpへの追記、app/tmpの書き込み権限付与が完了します。

また、composer.jsonには、よく使いそうなプラグインなどの指定をしていますので、適宜変更してください。

コメントを残す

Page optimized by WP Minify WordPress Plugin