【Composer】CakePHP2系の最新版をインストール

はじめに

PHPのフレームワークでは、圧倒的な注目が「Laravel」に注がれています。
しかし、既存サーバーのphpが古くてLaravelが使えない方もいるのではないでしょうか。

そこで、今さらではありますがCakePHP2系の最新版をComposerを使ってインストールする手順を紹介します。

前提となる環境

CentOS6
・apacheインストール済み
(ドキュメントルート /var/www/html/ )
・php5系インストール済み
・mysqlインストール済み

Composerをインストール

ホームディレクトリに移動します

$ cd ~/

Composerをダウンロードします。

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

Downloading...
Composer (version 1.8.6) successfully installed to: /home/*****/tmp/composer.phar
Use it: php composer.phar

コマンドに「composer」と打ち込むだけで実行できるように、ファイルを移動します。

$ sudo mv composer.phar /usr/local/bin/composer

Composerの動作確認

$ composer -v
composerバージョン情報

以上で、Composerのインストールは完了です。

CakePHP2をインストール

アプリケーション用のWebディレクトリ(仮にcake2)を作成して、composer.jsonを設置します。

$ cd /var/www/html/cake2/
$ vi composer.json

以下の設定
・CakePHP2系の最新版をダウンロード
・phpunitとdebug kitを一緒にダウンロード

{
    "name": "cake2/hello-cake",
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.cakephp.org"
        }
    ],
    "require": {
        "cakephp/cakephp": ">=2.9.9,<3.0.0"
    },
    "require-dev": {
        "phpunit/phpunit": "3.7.37",
        "cakephp/debug_kit": ">=2.2.4,<3.0.0"
    },
    "config": {
        "vendor-dir": "vendors/"
    },
    "extra": {
        "installer-paths": {
            "./plugins/{$name}/": [
                "cakephp/debug_kit"
            ]
        }
    }
}

ComposerでCakePHPをインストール

$ composer install

ダウンロードが終わるまでしばらくお待ちください。 完了すると、プロジェクトルートは下記のような階層になります。

$ tree -L 1 -a                                               
.
├── composer.json
├── composer.lock
├── plugins
└── vendors

このままでは動きませんので、アプリケーションを展開(bake)します

$ ./vendors/bin/cake bake project app
Welcome to CakePHP v2.10.18 Console
---------------------------------------------------------------
App : appdir
Path: /var/www/html/cake2/
---------------------------------------------------------------
Skel Directory: /var/www/html/appdir/vendors/cakephp/cakephp/lib/Cake/Console/Templates/skel
Will be copied to: /var/www/html/cake2/app
---------------------------------------------------------------
Look okay? (y/n/q) 
[y] > 
---------------------------------------------------------------
Created: app in /var/www/html/appdir/app
---------------------------------------------------------------
 * Random hash key created for 'Security.salt'
 * Random seed created for 'Security.cipherSeed'
~略~
 * Remember to check these values after moving to production server
Project baked successfully!

ディレクトリ構造
・appディレクトリ以下にアプリケーションが展開されています

$ tree -L 1 -a
.
├── app
├── composer.json
├── composer.lock
├── plugins
└── vendors

以上でbakeが完了しました。
続いて、最低限必要なファイルを設置していきます。

必要なファイルを設置

プロジェクトルートにindex.phpを作成

$ vi index.php
<?php
define('APP_DIR', 'app');
define('DS', DIRECTORY_SEPARATOR);
define('ROOT', dirname(__FILE__));
define('WEBROOT_DIR', 'webroot');
define('WWW_ROOT', ROOT . DS . APP_DIR . DS . WEBROOT_DIR . DS);

/**
 * This only needs to be changed if the "cake" directory is located
 * outside of the distributed structure.
 * Full path to the directory containing "cake". Do not add trailing directory separator
 */
if (!defined('CAKE_CORE_INCLUDE_PATH')) {
define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'lib');
}

require APP_DIR . DS . WEBROOT_DIR . DS . 'index.php';

プロジェクトルートに.htaccess作成

$ vi .htaccess
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^$ app/webroot/ [L]
  RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

ページにアクセス

以上で準備が整いました。 ページにアクセスしてみましょう。 http://192.168.**.**/cake2/

トップページが表示されましたでしょうか?

データベースを使うため、続いて下記の設定を行います。
・データベース接続設定
・DebugKitの設定

データベースの接続設定

データベースの接続設定を行います。
今回は初期の設定ファイルをコピーして使います。

$ cp app/Config/database.php.default app/Config/database.php
$ vi app/Config/database.php

データベースのアカウント情報を書き込みます。
今回は$defaultのみ設定します。

    public $default = array(
        'datasource' => 'Database/Mysql',//MySQLを使用
        'persistent' => false,           //持続的接続を使用しない
        'host'       => 'localhost',     //DBホスト名
        'login'      => 'user',          //DBユーザー
        'password'   => 'password',      //DBパスワード
        'database'   => 'database_name', //DB名
        'prefix'     => '',              //DB内の全テーブル名の先頭に着ける接頭辞
        'encoding'   => 'utf8',          //DBエンコーディング
    );
    public $test = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host'       => 'localhost',
        'login'      => 'user',
        'password'   => 'password',
        'database'   => 'test_database_name',
        'prefix'     => '',
            //'encoding' => 'utf8',
    );

DebugKitの設定

DebugKitを使うと、Sessionやリクエストの値などが確認できて便利です。有効にして効率的にコーディングしていきましょう。

app/Config/bootstrap.php に、プラグインのロードの記述を追加します。

CakePlugin::load('DebugKit');//追加

ページに表示されていた黄色い注意メッセージが緑に変更されました。

続いて、ページの右上にDebugKitのツールバーを表示するために設定を追加します。

app/Controller/AppController.php

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

SQLの処理内容もDebugKitに表示されるため、初期のテンプレートを変更します。
app/View/Layouts/default.ctpの下記部分を削除(又はコメント化)

 <?php echo $this->element('sql_dump'); ?>

ページ右上のDebugKitツールバーを確認

以上で、DebugKitの設定が完了しました。

最後に

いかがでしたでしょうか?Composerを使うと簡単にセットアップできますね。

以上、Composerを使ってCakePHP2をインストールする流れを紹介しました!