こんにちは、cloudpack の @dz_ こと大平かづみです。
Prologue - はじめに
Blog Tutorial がだいたいできたところで、 composer
による CakePHP インストールと、bake
によるプロジェクトのスケルトン作成を試してみました。
以下のドキュメントに沿って進めます。
手順のポイント
composer で CakePHP2 をインストール
アプリを置くディレクトリに以下の 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
初期設定
タイムゾーンの設定
...
/**
* 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
...
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プラグインのロード
...
/**
* 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ツールバーをコンポーネントに設定
...
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"
を設定して下さい。
...
[Date]
date.timezone = "Asia/Tokyo"
...
Epilogue - おわりに
昨日の記事 と少し似ていますが、こちらの方がすっきりプロジェクトを始められますね!
さぁ、ざくざく理解を進めてまいります!
近況
最近
- Check! はじめての Zabbix インストール on Debian x Amazon RDS
- [初メモ] はじめての Tomcat 〜 つまづいたところまとめ (Java のバージョン指定、起動パラメータ など)
- Check! はじめての CakePHP2 ポイントまとめ 〜 Blog Tutorial を動かそう ←
- Check! はじめての CakePHP2 〜 bake でプロジェクトスケルトンを利用する ←
Phalcon関連
- 爆速フレームワーク!! Phalcon PHP Framework
- Meet Volt ! Phalcon 謹製テンプレートエンジン Volt - from 第71回 PHP勉強会
- Meet Phalcon! - Phalcon PHPフレームワークを Nginx on Amazon EC2 にインストール!
fluentd関連
- Check! はじめての fluentd を Amazon Linux で動かしてみる (ログを PHP から送る)
- Check! はじめての Fluentd 〜 IAMロールで Amazon EC2 と S3 間をセキュアに
技術ブログ寄稿
cloudpack技術ブログでも、AWS Lambda や 運用ツール Serf に関して記事を書いています。ご興味あれば読んでいただけると嬉しいです!