カテゴリー
コンピューター

Composer で開発用 CakePHP2 をインストールする手順★いつも使うプラグインも★

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/"
    }
}

それぞれのパッケージにはバージョンがついています。時間が経つと古くなってしまいますから、ページを確認して修正する必要があるかもしれませんわ。

なお、PHPUnit のみ、あえてバージョンの低い 3.7 としております。これわわざとで、最新の PHPUnit ですと正常に動かないためですわ。公式ドキュメントでも案内されていますの。

PHPUnit4 はCakePHPのユニットテスト機能と互換性がありません。

テスト — CakePHP Cookbook 2.x ドキュメント

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日追記で解決しました♪次のページが参考になりました♪やったぜ!

以上です。

コメントを残す