ログってなんぼ

日々のメモです

ComposerでCakePHPとDebugKitをセットアップ

応用インストール — CakePHP Cookbook 2.x ドキュメント

こちらを参考にしながら作業

Composerのインストール

ローカルインストールする場合

プロジェクト内のみで動作すれば良ければコレが一番簡単

curl -sS https://getcomposer.org/installer | php

composer.pharというファイルができるのでコレを使う。 今回の作業はこちらで。

システム全体で使う

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

pathの通っているところにcomposerコマンドとして配置する感じになります

CakephpとDebugKitのインストール

composer.jsonを作成

composerが参照するjsonファイルを書きます

{
    "name": "APPNAME",
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.cakephp.org"
        }
    ],
    "require": {
        "cakephp/cakephp": "2.5.7",
        "cakephp/debug_kit": "2.2.*"
    },
    "config": {
        "vendor-dir": "Vendor/"
    }
}

今回は2.5.7を入れました。

"cakephp/cakephp": ">=2.5.7"

などという書き方をすることで、2.5.7以上かつその時の最新リポジトリを使ってくれる模様です。記事執筆現在、上記書き方をすると2.6.0が落ちてきました。今回は2.5.7固定でインストールします。

インストール

ではjsonの内容を参照して実際にインストールを行います

# php composer.phar install
Loading composer repositories with package information
Initializing PEAR repository http://pear.cakephp.org
Installing dependencies (including require-dev)
  - Installing composer/installers (v1.0.19)
    Loading from cache

  - Installing cakephp/cakephp (2.5.7)
    Downloading: 100%         

  - Installing cakephp/debug_kit (2.2.5)
    Loading from cache

Writing lock file
Generating autoload files

しばらく待つとインストール終了。

確認

どんな状態でインストールされたのか確認してみます

# ll
total 1036
drwxr-xr-x 1 vagrant vagrant     102 2015-01-06 14:53 Plugin
drwxr-xr-x 1 vagrant vagrant     204 2015-01-06 14:53 Vendor
-rw-r--r-- 1 vagrant vagrant     298 2015-01-06 14:50 composer.json
-rw-r--r-- 1 vagrant vagrant    6693 2015-01-06 14:53 composer.lock
-rwxr-xr-x 1 vagrant vagrant 1047190 2015-01-06 14:50 composer.phar

# ll Vendor/
total 4
-rw-r--r-- 1 vagrant vagrant 183 2015-01-06 14:53 autoload.php
drwxr-xr-x 1 vagrant vagrant 102 2015-01-06 14:53 bin
drwxr-xr-x 1 vagrant vagrant 102 2015-01-06 14:52 cakephp
drwxr-xr-x 1 vagrant vagrant 306 2015-01-06 14:53 composer

# ll Plugin/
total 0
drwxr-xr-x 1 vagrant vagrant 544 2015-01-06 14:53 DebugKit

VendorディレクトリにはCakePHP本体、PluginディレクトリにはDebugKitがインストールされています

アプリケーションをbake

というわけでこの状態からアプリケーション(appディレクトリ)をbakeします

# Vendor/bin/cake bake project app

Welcome to CakePHP v2.5.7 Console
---------------------------------------------------------------
App : APPNAME
Path: /var/www/APPNAME/
---------------------------------------------------------------
Skel Directory: /var/www/APPNAME/Vendor/cakephp/cakephp/lib/Cake/Console/Templates/skel
Will be copied to: /var/www/APPNAME/app
---------------------------------------------------------------
Look okay? (y/n/q) 
[y] > y
---------------------------------------------------------------
Created: app in /var/www/APPNAME/app
---------------------------------------------------------------
 * Random hash key created for 'Security.salt'
 * Random seed created for 'Security.cipherSeed'
 * Cache prefix set
 * app/Console/cake.php path set.
CakePHP is not on your `include_path`, CAKE_CORE_INCLUDE_PATH will be hard coded.
You can fix this by adding CakePHP to your `include_path`.
 * CAKE_CORE_INCLUDE_PATH set to /var/www/APPNAME/Vendor/cakephp/cakephp/lib in webroot/index.php
 * CAKE_CORE_INCLUDE_PATH set to /var/www/APPNAME/Vendor/cakephp/cakephp/lib in webroot/test.php
   * Remember to check these values after moving to production server
Project baked successfully!

・ソルトとサイファーシード、キャッシュ接頭辞を自動で決めたよ
・COREファイルのIncludeパスはハードコードされているから環境に合うように変えてね

というようなメッセージが出て終了

# ll
total 1036
drwxr-xr-x 1 vagrant vagrant     102 2015-01-06 14:53 Plugin
drwxr-xr-x 1 vagrant vagrant     204 2015-01-06 14:53 Vendor
drwxr-xr-x 1 vagrant vagrant     544 2015-01-06 14:54 app
-rw-r--r-- 1 vagrant vagrant     304 2015-01-06 15:13 composer.json
-rw-r--r-- 1 vagrant vagrant    6693 2015-01-06 14:53 composer.lock
-rwxr-xr-x 1 vagrant vagrant 1047190 2015-01-06 14:50 composer.phar

appディレクトリができています。

実際に動作させる場合には、Webサーバーのドキュメントルートをappディレクトリに設定することになります。

各種設定を修正

環境に適合するように設定します

app/webroot/index.php

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

testを行う場合は、app/webroot/test.phpも同様の修正を行います。

app/Console/cake.php

#$composerInstall = $root . DS . $appDir . DS . 'Vendor' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib';
$composerInstall = $root . DS . 'Vendor' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib';

app/Config/bootstrap.php

最下行に追記

// Pluginディレクトリ指定を相対パスで
App::build(array('Plugin' => array(ROOT . DS . 'Plugin' . DS)));

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

DebugKitの設定

# vim app/Controller/AppController.php

AppControllerクラスの中に一行追記

class AppController extends Controller {
        public $components = array('DebugKit.Toolbar');
}

データベースの設定

# cp app/Config/database.php.default app/Config/database.php
# vim app/Config/database.php

確認

f:id:Okisanjp:20160715120931p:plain

OKですね