こんばんは、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'); // 

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

# テンプレート `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 - おわりに

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

近況

最近

Phalcon関連

fluentd関連

技術ブログ寄稿

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

元記事はこちら

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