• WEB

Composerを使ってCakePHPを入れてみる

  • おさ
    おさ システムちーむ
  • このエントリーをはてなブックマークに追加
Composerを使ってCakePHPを入れてみる

最近巷で流行っているComposerというものを使用してPHPのパッケージ管理をしてみたいと思います。今回はComposerを使用して、CakePHPを入れてみます。

環境

  • CentOS 6.6
  • PHP5.6
  • Apache2.2
  • MySQL 5.6

という環境で行っています。
Composerを使用するにはPHP 5.3.2以上が必要になります。

Composerのダウンロード

Composerのホームページは以下になります。
Composer 公式サイト

残念ながらまだ英語ページしかありません。
早速ダウンロードしてみましょう。以下のコマンドを自分のホームディレクトリで打ってみます。


$ curl -sS https://getcomposer.org/installer | php
#!/usr/bin/env php
All settings correct for using Composer
Downloading...

Composer successfully installed to: /home/userdir/composer.phar
Use it: php composer.phar

composer.phar というファイルができました。このファイルを実行するとComposerを起動することができます。


$ php composer.phar
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.0-dev (b23a3cd36870ff0eefc161a4638d9fcf49d998ba) 2014-11-21 17:59:11

Usage:
  [options] command [arguments]

このままでもいいのですが、PATHが通っている所にファイルを移してどこからでも実行できるようにすると便利です。
ユーザーのホームディレクトリ配下にbinディレクトリを作成し、そこにファイルを移してcomposerという名前に変えます。


$ mkdir ~/bin
$ mv composer.phar ~/bin/composer

これでPATHを気にせずComposerを実行できるようになりました。


$ composer
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.0-dev (b23a3cd36870ff0eefc161a4638d9fcf49d998ba) 2014-11-21 17:59:11

CakePHPのインストール

次にCakePHPをインストールしていきます。

Composerを利用したインストール方法はCakePHPのホームページに載っていますので、それに従ってインストールしていきます。

CakePHP>Document>Book>インストール>応用インストール>
CakePHP 公式ドキュメント

composer.jsonファイルの作成

Composerを使うにはcomposer.jsonという設定ファイルを作る必要があります。
まずプロジェクト用のディレクトリを作成してそこにcomposer.jsonファイルを作っていきます。


$ mkdir myprjt
$ cd myprjt
$ vi composer.json

composer.jsonファイルの内容は以下になります。


{
    "name": "myprjt",
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.cakephp.org"
        }
    ],
    "require": {
        "cakephp/cakephp": ">=2.4.9"
    },
    "config": {
        "vendor-dir": "Vendor/"
    }
}

CakePHPのインストール

これで準備が整いました。myprjtディレクトリでインストールコマンドを実行するとCakePHPがインストールされます。


$ composer install
Loading composer repositories with package information
Initializing PEAR repository http://pear.cakephp.org
Installing dependencies (including require-dev)
  - Installing cakephp/cakephp (2.5.6)
    Loading from cache

Writing lock file
Generating autoload files

Vendorディレクトリが作成されて、その中にCakePHPがインストールされました。
次にアプリケーションのスケルトン部分を作成するためCakePHPのbakeを実行します。今回は「app」というアプリケーション名で作成します。


$ Vendor/bin/cake bake project app

Welcome to CakePHP v2.5.6 Console
---------------------------------------------------------------
App : myprjt
Path: /home/userdir/myprjt/
---------------------------------------------------------------
Skel Directory: /home/userdir/myprjt/Vendor/cakephp/cakephp/lib/Cake/Console/Templates/skel
Will be copied to: /home/userdir/myprjt/app
---------------------------------------------------------------
Look okay? (y/n/q)
[y] > y
---------------------------------------------------------------
Created: app in /home/userdir/myprjt/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 /home/userdir/myprjt/Vendor/cakephp/cakephp/lib in webroot/index.php
 * CAKE_CORE_INCLUDE_PATH set to /home/userdir/myprjt/Vendor/cakephp/cakephp/lib in webroot/test.php
   * Remember to check these values after moving to production server
Project baked successfully!

アプリケーションのスケルトン部分が作成されました。ディレクトリ構造は以下のようになっています。


myprjt/
    composer.json
    composer.lock
    Vendor/
        autoload.php
        bin/
        cakephp/
        composer/
    app/

Composerを使用した場合、bakeで作成したスケルトンはそのままでは動作しません。app/webroot/index.phpCAKE_CORE_INCLUDE_PATHを修正する必要があります。


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

app/webroot/test.phpも同様にCAKE_CORE_INCLUDE_PATH を定義しているので、index.phpと同様に修正しておきます。

Composer で他のライブラリをインストールしている場合、Composerのオートローダーで問題が起きるので、app/Config/bootstrap.phpに以下の行を追加します。


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

これでApacheのバーチャルホストを設定すれば、いつものCakePHPの初期画面が現れると思います。

CakePHPの初期画面

DebugKitのインストール

CakePHPの初期画面で「DebugKitがインストールされていませんよ」という警告が出ているので、DebugKitを入れてみます。

GitHub cakephp/debug_kit

こちらもComposerを利用してインストールします。

CakePHPのインストールで使用したcomposer.jsonを編集します。


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

require の部分にcakephp/debug_kitを追加しました。これでComposerにアップデートをかけます。


$ composer update
Loading composer repositories with package information
Initializing PEAR repository http://pear.cakephp.org
Updating dependencies (including require-dev)
  - Installing composer/installers (v1.0.18)
    Loading from cache

  - Installing cakephp/debug_kit (2.2.5)
    Downloading: 100%

Writing lock file
Generating autoload files

myprjtディレクトリの下にPluginというディレクトリができ、その下にDebugKitが作成されました。

次にプラグインを有効化します。app/Config/bootstrap.phpに以下の行を追加します。


App::build(array(
    'Plugin' => ROOT . '/Plugin/',
));

CakePlugin::load('DebugKit');

また、app/Controller/AppController.phpでDebugKit.Toolbar を使用するようにします。


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

CakePHPの画面にアクセスしてみると “DebugKit plugin is present” と出ているので有効化されました。
ただ、画面の下の方にスクロールしていくと、表示が崩れてしまっています。DebugKitの画像やCSSがうまく取得できていません。

app/webroot/にDebugKitの画像、CSSへのシンボリックリンクを作ります。


$ cd ~/myprjt/app/webroot/
$ ln -s ../../Plugin/DebugKit/webroot/ debug_kit

無事、DebugKitが動作するようになり、画面の右上にDebugKitのツールバーが表示されました。

DebugKitの動作確認

このエントリーをはてなブックマークに追加

おさが最近書いた記事

WRITERS POSTS もっと見る

他にもこんな記事が読まれています!

  • WEB
  • マーケティング
  • サーバー・ネットワーク
  • ライフスタイル
  • お知らせ