2010年5月2日日曜日

PHP の開発環境を整える (2010.5) - CakePHP の準備

1. 開発環境の一覧

この時期、恒例になってきた開発環境の整備。変なエラーに煩わされないことを祈りつつ設定 (+_+)

利用するツールとバージョンは以下の通り。

 

2. CakePHP を利用するための準備

今回、開発環境を新しくした理由は、修正したいコードがあったため。修正対象のソースコードで、PHP が使われている部分は、

  1. パーツに分割した HTML を結合する処理と ( cf. フレームの代わりにPHPを使う ) 、
  2. フォームでの問い合わせの処理。

DB は使用していない。処理はシンプルなので、テンプレートエンジンを使わず、自前で MVC ライクに書いている。しかし、いくら単純でも、Web ページの数が増えてくると、重複した部分が徐々に気になってくる。フレームワークを使うように変更しようか、検討中。

以前に、CakePHP を試してみようと環境を整えたことがある。

軽量なフレームワーク

も良さげだけれど、 PHP で他のフレームワークを使ったことがないので、とりあえず CakePHP への移行が無難かな。

PHP はたくさんのフレームワークが乱立している。なるべくシンプルでコンパクトなものを使いたい。以下の図による説明を見ると、今回の自分のやりたいことに対して、CakePHP は、妥当な選択に思えた。

ちなみに、調べていたら、 symfony からのつながりで、Twig というテンプレートエンジンが気になった。一度、使ってみたい。

http://www.twig-project.org/

Twig via kwout

 

使用する CakePHP のバージョン

CakePHP のバージョンを確認したら、1.3.0 と 1.2.7 がリリースされている。1.3 はまだ出たばかりのようなので、今回は 1.2.7 を利用することにした。

現時点では、1.2 の方がドキュメントが充実している。

 

PDT へ CakePHP のソースコードをインポート
  1. cakephp / cakephp1x より、1.2.7 をダウンロードして解凍。
  2. PDT で新規に testCakePHP2 プロジェクトを作成。
  3. 解凍した CakePHP のソースコードを testCakePHP2 プロジェクトに D&D。
  4. プロジェクトのプロパティで Resource > Text file encoding を UTF-8 に変更。

 

Apache の設定

Apache の httpd.conf で以下の記述がコメントアウトされているのを確認。 ( cf. Apacheとmod_rewrite )

LoadModule rewrite_module modules/mod_rewrite.so

テスト用のアプリケーションの設定のために以下の記述を追加。

Alias /testCakePHP2/ "C:/develop/tool/eclipse/workspace/testCakePHP2/"
<Directory "C:\develop\tool\eclipse\workspace\testCakePHP2/">
    Options FollowSymLinks 
    AllowOverride All
    Allow from All
</Directory>

ただし、PDT が利用する workspace は、

C:/develop/tool/eclipse/workspace/

であるとする。また、アプリケーションのルートの URL は、

http://localhost/testCakePHP2/

とする。上記の設定中 Options FollowSymLinks を有効にしているのは、Old Nabble - CakePHP - Forbidden Error によると、

In order for mod_rewrite to work you have to have:
Options FollowSymLinks
Put that right under the AllowOverride All and it should work. :)

 

CakePHP の .htaccess に RewriteBase を追加

次に CakePHP on XAMPP でちょっとはまった « 43HR を参考にして、PDT にインポートした CakePHP のソースコードの以下の各々のファイルに内容に RewriteBase を追加。

  • testCakePHP2/.htaccess に RewriteBase /testCakePHP2
  • testCakePHP2/app/.htaccess に RewriteBase /testCakePHP/app
  • testCakePHP2/app/webroot/.htaccess に RewriteBase /testCakePHP2/app/webroot

 

debugger.php の設定

これで http://localhost/testCakePHP2/ にアクセスすることができるようになった。ただし、以下の警告が表示される。

Notice (1024): Please change the value of 'Security.salt' in app/config/core.php to a salt value specific to your application [CORE\cake\libs\debugger.php, line 548]

CakePHPブログチュートリアル :: 開発例 :: マニュアル :: 1.2 Collection :: The Cookbook によると、

security saltは、ハッシュの生成に用いられます。/app/config/core.phpの153行目を編集し、デフォルトのsalt値を変更してください。

これにより、警告が消える。

 

3. MySQL の設定

今回は DB を使う予定はない。しかし、http://localhost/testCakePHP2/ にアクセスすると警告がでるので、ついでに DB の設定もしておく。

XAMPP のコントロールパネルで MySQL の Start ボタンを押す。

Admin ボタンで phpMyAdmin を起動。(phpMyAdmin を使いたくない場合は、MySQL Workbench を利用するとよい。)

データベース」タブを選択し、新規にデータベース testcakephp を作成。

img05-02-2010[2]

XAMPP の MySQLと PHP の説明によると、

MySQLは "root" に対するパスワード無しで起動します。したがってPHPではMySQLサーバを以下で接続できます: mysql_connect("localhost","root","")
MySQLの"root" に対するパスワードを設定したい場合は、コンソール(Console)の下の"mysqladmin"を使ってください。

testCakePHP2\app\config の database.php.default を database.php に名前を変更。 database.php で $default 変数のハッシュのキーに対する値において、

  • login を root
  • password を空
  • database を 上記で作成した testcakephp

に変更する。これで、http://localhost/testCakePHP2/ にアクセスすると警告が消える。

データベースで、アプリケーション専用のユーザを作成してアクセスしたいなら、phpMyAdmin の「特権」タブにおいて、test ユーザを作成。パスワードを test とする。その際、グローバル特権にデータと構造に全てチェックを付けておいた。

img05-02-2010[3]

上記の database.php に戻り、

  • login を test
  • password をtest
  • database を 上記で作成した testcakephp

と設定する。

http://localhost/testCakePHP2/ にアクセスすると、オールグリーンで準備完了。

img05-02-2010[1] 

 

4. 分散バージョン管理に移行しようかな…

分散バージョン管理Git/Mercurial/Bazaar徹底比較 (1/5) - @IT (2009/1/14) によると、

分散バージョン管理システムでは、ローカルのブランチに対して作業を行い、テストまできちんと終了した作業のまとまりを中央リポジトリへ反映できます。

出先で、ノート PC を利用してバージョン管理をしたいので、そろそろ分散バージョン管理に移行しようかな。

個人的には Haskell で作られている Darcs を使ってみたい。

 

関連記事