LoginSignup
3
2

More than 5 years have passed since last update.

Check! はじめての CakePHP2 〜 bake でプロジェクトスケルトンを利用する

Posted at

こんにちは、cloudpack@dz_ こと大平かづみです。

Prologue - はじめに

Blog Tutorial がだいたいできたところで、 composer による CakePHP インストールと、bake によるプロジェクトのスケルトン作成を試してみました。

以下のドキュメントに沿って進めます。

手順のポイント

composer で CakePHP2 をインストール

アプリを置くディレクトリに以下の composer.json を作成します。アプリ名は任意です。

composer.json
{
    "name": "example-app",
    "require": {
        "cakephp/cakephp": "2.6.*"
    },
    "config": {
        "vendor-dir": "Vendor/"
    }
}

そして、composer でインストールしましょう。composer は、そのディレクトリに実行ファイルを置いて php composer で実行する方法と、グローバルに設置して composer で実行する方法があります。私はグローバルで設置しました。詳細は公式ドキュメントのインストール手順などを参照くださいませ。

# composer でインストール
composer install

ディレクトリはこのような構成になりました。

tree -L 1
.
├── Vendor
│   ├── autoload.php
│   ├── bin
│   ├── cakephp
│   └── composer
├── composer.json
└── composer.lock

bake でプロジェクトのスケルトン作成

そして、プロジェクトのスケルトン(空のプロジェクト)を作りましょう。

# bake で CakePHP2 のスケルトンを作成
Vendor/bin/cake bake project .

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

はい、簡単にプロジェクトのスケルトンが作成されました!プロジェクトの状態はこんな感じです。Blog Tutorial とはディレクトリ構成が異なりますね。

tree -L 1
.
├── Config
├── Console
├── Controller
├── Lib
├── Locale
├── Model
├── Plugin
├── Test
├── Vendor
├── View
├── composer.json
├── composer.lock
├── index.php
├── tmp
└── webroot

初期設定

タイムゾーンの設定

Config/core.php
...

/**
 * Uncomment this line and correct your server timezone to fix
 * any date & time related errors.
 */
        //date_default_timezone_set('UTC');
        date_default_timezone_set('Asia/Tokyo');    // <---- 'Asia/Tokyo' を指定

...

データベース接続情報の設定

# テンプレート `database.php.default` をコピー
cp Config/database.php.default Config/database.php
Config/database.php
...

        public $default = array(
                'datasource' => 'Database/Mysql',
                'persistent' => false,
                'host' => 'localhost',
                'login' => 'user',             // <---- データベースのユーザー名
                'password' => 'password',      // <---- データベースのユーザーのパスワード
                'database' => 'database_name', // <---- データベース名
                'prefix' => '',
                //'encoding' => 'utf8',
        );

...

$test も必要があれば設定してください。

DebugKitプラグインのインストールとロード

DebugKitプラグインのインストール

composer.json があるディレクトリで以下を実行します。

# DebugKitプラグインをインストール
composer require --dev cakephp/debug_kit "2.2.*"

DebugKitプラグインのロード

Config/bootstrap.php
...

/**
 * Plugins need to be loaded manually, you can either load them one by one or all of them in a single call
 * Uncomment one of the lines below, as you need. Make sure you read the documentation on CakePlugin to use more
 * advanced ways of loading plugins
 *
 * CakePlugin::loadAll(); // Loads all plugins at once
 * CakePlugin::load('DebugKit'); //Loads a single plugin named DebugKit
 *
 */
CakePlugin::load('DebugKit');    // <---- ロード処理を明記

...

DebugKitツールバーをコンポーネントに設定

Controller/AppController.php
...

class AppController extends Controller {
  var $components = array('DebugKit.Toolbar');    // <---- コンポーネントを追加
}

トラブルシューティング

bake project でタイムゾーンの Warning

bake project で、以下の Warning が出てしまう場合は、以下のように /etc/php.ini でタイムゾーンの設定をしてください。

Vendor/bin/cake bake project .

PHP Warning:  strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for 'UTC/0.0/no DST' instead in /var/www/html/cakeapp2/Vendor/cakephp/cakephp/lib/Cake/Cache/CacheEngine.php on line 60

...<略>...

Welcome to CakePHP v2.6.8 Console
---------------------------------------------------------------
App : cakeapp2
Path: /var/www/html/cakeapp2/
---------------------------------------------------------------
Skel Directory: /var/www/html/cakeapp2/Vendor/cakephp/cakephp/lib/Cake/Console/Templates/skel
Will be copied to: /var/www/html/cakeapp2/.
---------------------------------------------------------------
Look okay? (y/n/q) 
[y] > 

php.ini で、 date.timezone = の部分がコメントアウトされているので、 "Asia/Tokyo" を設定して下さい。

/etc/php.ini
...

[Date]
date.timezone = "Asia/Tokyo"

...

Epilogue - おわりに

昨日の記事 と少し似ていますが、こちらの方がすっきりプロジェクトを始められますね!

さぁ、ざくざく理解を進めてまいります! :octocat:

近況

最近

Phalcon関連

fluentd関連

技術ブログ寄稿

cloudpack技術ブログでも、AWS Lambda や 運用ツール Serf に関して記事を書いています。ご興味あれば読んでいただけると嬉しいです!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2