Help us understand the problem. What is going on with this article?

CakePHP2をComposerでサクッとセットアップする

More than 5 years have passed since last update.

CakePHP3はcomposerでのセットアップがデフォルトだが、cakephp2はそういうアナウンスがされておらず、応用インストールという扱いになっている。
http://book.cakephp.org/2.0/ja/installation/advanced-installation.html

CakePHP3が出たとはいっても、CakePHP2もまだまだ現役。今後仕事でまた本格的に使いはじめるのでまとめてみた。cakephp.orgから落とせるzipファイルとほぼ同じディレクトリ構成を目指すよ。

アプリのディレクトリを作成して作業開始。

$ mkdir cakephpapp/ # アプリのディレクトリ作成

composer.jsonの記述

以下の様なcomposer.jsonを作成する。公式bookに記載されていたものをベースに様々追加。

公式book:http://book.cakephp.org/2.0/ja/installation/advanced-installation.html

cakephpapp/composer.json
{
    "name": "example-app",
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.cakephp.org"
        }
    ],
    "require": {
        "cakephp/cakephp": ">=2.6.4,<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"
            ]
        }
    }
}

現在CakePHP2系の最新版が2.6.4なので、requireにてバージョン2.6.4以上3.0.0未満を指定。

CakePHP2はPHPUnit4系には対応していないため、PHPUnitは3.7.37(最新版)以上4.0.0未満を指定。debug_kitも同様に2.2.4以上3未満を指定。

また/vendors/pluginsはgit管理に入れて/app/Vendor/app/Pluginはgit管理する構成にしたかったのでインストールされるディレクトリを調整した。

bakeする

cakephpapp/appというappディレクトリの中に主なソースコードを生成する。

$ vendors/bin/cake bake project app

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

これでいっぱいコードができたはず。
PHPのビルトインサーバーで動作確認。

$ cd app/webroot
$ php -S localhost:8989

ブラウザでlocalhost:8989にアクセスすると以下の様な画面になるはず。

Screen Shot 2015-05-02 at 12.40.35.png

DebugKitの有効化

/app/Config/bootstrap.phpに以下の1行を追記すればよし。さっきの画面の黄色が一つ緑になるはず。

/app/Config/bootstrap.php
CakePlugin::loadAll();

ブラウザでlocalhost:8989/test.phpを叩いて以下の様な画面が出たらOK。

Screen Shot 2015-05-02 at 12.47.18.png

データベースの設定

説明省略。これでオールグリーンになる。

ハードコーディングの解消

/app/webroot/index.phpやtest.phpをみるとディレクトリがめっちゃハードコーディングされていてデプロイさせられないので修正する。

index.phpとtest.phpの55行目あたり
// これを
// define('CAKE_CORE_INCLUDE_PATH',  DS . 'Users' . DS . 'username'. DS . 'testcakephp2' . DS . 'vendors' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib');

// こうする
define('CAKE_CORE_INCLUDE_PATH',  ROOT. DS . 'vendors' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib');

git init

.gitignore作る。

/.gitignore
/vendors
/plugins

/app/tmp/*
/app/Config/core.php
/app/Config/database.php

composer.lockはignoreせずちゃんとcommitに含めましょうね。
https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file

$ git init
$ git add .
$ git commit -m'initial commit'

以上

サクッとここまで作れるとプロトタイピングも早くなりますね。scaffoldもつかって即効でCRUDアプリを作るタイムアタックも今度やります。

その他参考資料

ikuwow
いろんなことをしているWebエンジニアです
https://ikuwow.github.io
bm-sms
高齢社会に適した情報インフラを構築することで価値を創造し社会に貢献し続ける
https://www.bm-sms.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした