Edited at

CakePHPを使ってみて、いろいろやったこと


ログについて

cakePHP2.xをログローテートさせる参考URL:

http://kadoppe.com/archives/2011/04/cakephp-yalog-log4php.html


SSL対応について

SSLに対応させる方法結局のところ下記のような記述になりそう。

HTTPとHTTPSの住み分けが必要な場合は、各controllerのbeforefillterに書くようにする。

<?php

class WidgetController extends AppController {

public $components = array('Security');

public function beforeFilter() {
if (isset($this->params['admin'])) {
$this->Security->blackHoleCallback = 'forceSSL';
$this->Security->requireSecure();
}
}

public function forceSSL() {
$this->redirect('https://' . env('SERVER_NAME') . $this->here);
}
}


DB定義について


CakePHP2.Xのスキーマファイル

DB定義を変更するときのルールデータベース定義に変更があった際は、スキーマファイルを作成し、コミットを行う。

app/Config/Schema/schema.php


DB定義書の更新

そんなものいらないって話もあるけど、、

ローカルのDBを最新版に更新した状態で、DB定義書を出力します。

下記のようなツールを使うと早いとおもいます。

http://liginc.co.jp/programmer/archives/2686


Migration

Migrationの使い方データベースのスキーマ管理はCakeDCのMigrationsで行う。

https://github.com/CakeDC/migrations参考URL:(https://github.com/CakeDC/migrations/blob/master/readme.md)

○スキーマの作成について

DDLの変更を行った際は、ローカル環境で以下を実行する。

$ export CAKE_ENV=各自の環境変数; Console/cake Migrations.migration generate

最後に下記のようなやりとりがあるが、

Schemaファイルを更新して、上書かせて良い。(VCSで管理できてる前提)

Do you want update the schema.php file? (y/n)

[y] > y

Welcome to CakePHP v2.1.2 Console
---------------------------------------------------------------
App : app
Path: /var/www/html/cakephp/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

下記のようなファイルが作成されるので、

$ git status -s

? app/Config/Migration/1349484036_hoge_fuga20121010.php

addしてcommitする。

※スキーマファイル自体が変更を行ったものを読み取ってくれるわけではない。

 例えば、alter table でrenameを行ったとしても、schemaファイルがdrop,createと認識してしまう。

→schemaを作成するときに、実際generateされた内容が正しいか確認しておく。

 実行したい内容と差分があれば、Migrationファイルを書き換える。

 ※Migrationファイルの書き方はこちらを参考に。(https://github.com/CakeDC/migrations/blob/master/readme.md)

○スキーマの読み込みについて

他人が作成したスキーマを読み込む際は下記を実行する。

現在のDBに何が適用されているか確認。

$ export CAKE_ENV=各自の環境変数; Console/cake Migrations.migration status

schemaを一つ進める

$ export CAKE_ENV=各自の環境変数; Console/cake Migrations.migration run up

画面を確認したら、なんか状態が変だった。一個DBの状態を戻しましょう。

$ export CAKE_ENV=各自の環境変数; Console/cake Migrations.migration run down

基本的にマージをしたら、migration allをするようにすればいいと思う。

git pull origin develop

c-r mig

が手癖にしておけばおk


migrationの接続先データベースを選択する

テストようのDBを更新したい場合や、DBをいくつかにわけている場合は、

-cでデータベース接続名を指定できる。

DB名ではなくて、接続名なので注意。

接続名とはcakephpでDB接続を設定している時の名前。

$ Console/cake Migrations.migration status -c test


セキュリティに関する部分

なんとなく書いていこうかなぁとは思っている。。


この記事のライセンス



この記事はCC BY 4.0(クリエイティブ・コモンズ 表示 4.0 国際 ライセンス)の元で公開します。