CakePHPをComposerを使ってインストール

環境:Windows7(XAMPP)

Laravelインストール時にComposerはインストール済のため、その説明は省きます。

今回もLaravel同様に少しバージョンの低いCakePHPを導入。新しいものはドキュメントが少なく、先々困るので。

1.composer.jsonファイルの作成

ドキュメントルート直下(XAMPPの場合はC:\xampp\htdocs)に以下を記述したcomposer.jsonファイルを作成する。

{
    "name": "example-app",
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.cakephp.org"
        }
    ],
    "require": {
        "cakephp/cakephp": "2.5.*"
    },
    "config": {
        "vendor-dir": "Vendor/"
    }
}

2.CakePHPのインストール

コマンドプロンプトでドキュメントルートに移動し、composerよりCakePHPをインストールする。
composer install

これで、ドキュメントルート直下にVendeorフォルダが作成される。

3.Bakeを実行

コマンドプロンプトでルートディレクトリをカレントディレクトリに設定
【例】cd \d C:\xampp\htdocs

cake.batの書き換え
Vendor/bin/cake.bat

修正前: bash "%BIN_TARGET%" %*
修正後: cmd /C "%BIN_TARGET%" %*

bakeの実行(sampleプロジェクトの作成)
.\Vendor\bin\cake bake project C:\xampp\htdocs\sample

4.CAKE_CORE_INCLUDE_PATHの設定

デフォルトでは、bakeはCAKE_CORE_INCLUDE_PATHをハードコードするようになっているので修正
sample/webroot/index.php

define(
    'CAKE_CORE_INCLUDE_PATH',
    ROOT . DS . 'Vendor' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib'
);

5.DebugKitプラグイン等をインストール

Vendor/cakephp/cakephp/にあるcomposer.jsonをsample直下にコピーし、インストール。

composerオートローダーとcakephpのオートローダーが競合する問題の解消
sample/Config/bootstrap.php
に以下を追記

// composerのautoloadを読み込み
require ROOT . '/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);

CakePlugin::loadAll();

6.DB設定ファイル
事前にMySQLの設定、データベースは作っておく。
Configディレクトリのdatabase.php.defaultをコピペして「database.php」にリネーム。
中身を適宜変更。

http://localhost/sample/にアクセスし、以下画像のように全部緑色になっていれば完成。

snapcrab_noname_2017-1-4_12-56-2_no-00

コメントを書く