CakePHP2.xの環境構築
PHPド素人の個人的めも
前提条件
- 開発環境はDockerで構築した。
- comporser は今回使わず、プラグインのインストール等はGitを利用。
- 以下各種プラグイン等Gitで取得しているが、ホスト側、ゲスト側のどちらで取得しても特に問題ない。
- ただし、現状DockerコンテナのPHP5.3.3にはGitをいれていないので、ホスト側MacでGitコマンドを利用している。
- このあたりは、大人の事情で本番環境にレンタルサーバーの利用を想定しており、開発環境でGit等で取得したソースコードをプラグイン含めて全てFTPでアップする予定。
ローカルに用意するサーバー構成
- centos6.9
- Apach
- PHP5.3.3
- mysql5.7
CakePHPの配置
- github cakephp/cakephpから取ってくる。
- ブランチを
2.x
に切り替えてzipでダウンロード(Gitでとってもよかった) - zipを解凍して適当な場所に配置。フォルダを任意のプロジェクト名に変更してプロジェクトルートとした。場所や名称はなんでもいい。
初期設定
- セキュリティ設定、salt的なやつを設定する >>
app/Config/core.php
-
database.php
の記述host
にはIPアドレスではなく、ホストのコンテナ名を記述する
<?php
class DATABASE_CONFIG {
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'db', # << コンテナ名
'login' => 'root',
'password' => 'password',
'database' => 'room_guid',
'encoding' => 'utf8'
);
}
ブラウザアクセスでエラー表示
- php.iniの設定でエラー
[[PHP]php.iniのtimezoneを設定する] (https://qiita.com/maximum80/items/d8c841ccdaf6f8106b3f) << こちらを参考にして解消
テンプレートエンジンの導入
CakePHPでtwigを使うためのTwigView
というプラグインをいれて、その中に別途Twig本体を入れる仕組みらしい。
導入手順
-
predominant/TwigViewから、GitHubのマスターブランチを取ってくる。
-
以下、Readmeの通りにする
-
プラグインをダウンロード
$ cd app/Plugin
$ git clone git://github.com/predominant/TwigView.git TwigView
# app/Plugin/TwigView/vendor/配下にTwig本体を入れるらしい
$ cd TwigView/
$ git submodule update --init
上記リポジトリのreadme.mdに使い方がのっている
- プラグインの利用を許可する
bootstrap.php
はすでにPlugin配下のものを全て読み込むように設定済み
CakePlugin::loadAll();
- AppControllerの設定
class AppController extends Controller {
public $components = array('DebugKit.Toolbar');
public $viewClass = 'TwigView.Twig'; # << ここと
public $ext = '.twig'; # << ここ!!
...
- TwigViewのキャッシュファイル保持位置の設定追加
define('TWIG_VIEW_CACHE', APP . 'tmp');
ページにアクセスした時点で、app/tmp/ce/
配下にキャッシュが保存されるみたい
マイグレーションの導入
プラグインCakeDC Migrationの導入
-
マイグレーションファイルの書き方は公式ドキュメント CakeDC/migrationsを参照
-
Gitでとってきて
app/Plugin/Migrations/
に配置
$ cd app/Plugin/
$ git clone git://github.com/CakeDC/migrations.git Migrations
初期マイグレーションの作成
-
app/
の下で以下の各コマンドを実行する。 - 空のマイグレーションファイルをコマンドで生成する
Console/cake Migrations.migration generate
を実行して対話形式の質問には全てNo(n)で答えて最後にマイグレーションファイル名を入力する。
以下の例ではcreate_user
とした。
[root@28124f4a27e3 app]# Console/cake Migrations.migration generate
Cake Migration Shell
---------------------------------------------------------------
Do you want to compare the schema.php file to the database? (y/n)
[y] > n
Do you want to compare the database to the schema.php file? (y/n)
[y] > n
Do you want to preview the file before generation? (y/n)
[y] > n
Please enter the descriptive name of the migration to generate:
> crate_user
Generating Migration...
Done.
これでapp/Config/Migration/1542953578_crate_user.php
が作成される。
このファイルにDBの定義を記述する
公式ドキュメント CakeDC/migrationsに書き方(DBの定義方法)がのっている
マイグレーションの実行
マイグレーションコマンドについてもCakeDC/migrationsにかかれている
-
app/
の下で以下の各コマンドを実行する。 -
DBを全てリセット(Drop)最初にやっておく
Console/cake Migrations.migration run reset
-
マイグレーションファイルで未実行のものを全て実行する
Console/cake Migrations.migration run all
-
未実行のファイルから、バージョンを指定して実行する(対話形式)
Console/cake Migrations.migration run
スキーマファイルの更新
-
スキーマファイルでDBを作ったり、DBからスキーマファイルを作ったりできる。
-
今回はRails風にDBの作成はマイグレーションを利用し、更新されたDBからスキーマファイルを作成する。
そのため基本的にはDBの定義全体を確認するためのものとして利用する。 -
スキーマファイルは
app/Config/Schema/schema.php
にある(最初はないのでつくる) -
app/
の下で以下のコマンドを実行する
Console/cake schema generate -f
[root@28124f4a27e3 app]# Console/cake schema generate -f Welcome to CakePHP v2.10.13 Console --------------------------------------------------------------- App : app Path: /var/www/html/app/ --------------------------------------------------------------- Cake Schema Shell --------------------------------------------------------------- Generating Schema... Schema file exists. [O]verwrite [S]napshot [Q]uit Would you like to do? (o/s/q) [s] > o Schema file: schema.php generated
-f
オプションで、モデルの有無に関係なくDBにあるテーブルを全て書き出す
その他Plugin
とりあえずGithubからzipでとってきて解凍して/Plugins/
配下にほりこむ。
Debug Kit
導入方法
- ファイルダウンロード>解凍>配置
/Pulugin/DebugKit
- 設定ファイルで以下をコメントインして全てのプラグイン
/Plugin/
配下を読み込む
CakePlugin::loadAll(); // Loads all plugins at once
- AppControllerに設定記述
class AppController extends Controller {
public $components = array('DebugKit.Toolbar');
...
参考にしたサイト
基本的な内容
- ざっくりCakePHP2.×入門
- https://webcake.stars.ne.jp/event/cakephp2-8hours-seminar.html
- CakePHP2を学ぼう!優しいCakePHP超入門!スクリーンショット多め
- CakePHP 2.x Cookbook
プラグイン周り
- CakePHP DebugKit の導入手順
- 【CakePHP2.3】必須プラグイン(DebugKit)
- CakePHP2系にTwigを導入
- cakephp2.5系のブログチュートリアル+Twigテンプレート組み込み
- CakePHPでTwigView使う時FormやHtmlヘルパーが使えない
- cakephp2 チーム開発のためのマイグレーション
- CakePHP 2.x系におけるSchemaについて
- CakePHP2系でマイグレーションを利用する方法
- CakePHP 2.x Cookbook スキーマの管理とマイグレーション
- 公式ドキュメント CakeDC/migrations
- CakePHP 2系のCakeDC Migrationsプラグインのマイグレーションファイルの作成について << 仕組みについてわかりやすくかかれている