ウェブシステムの開発効率や品質の向上を図るには欠かせないフレームワーク。Rubyと言えば Rails ですが、PHPと言えば...ってのはそりゃもう色々と見解がある訳で。
最近の国内の動向としては Piece Framework が気になってはいるのですが、目下のプロジェクトに投下するには少々抵抗があります。(国産フレームワークは maple の開発が実質ストップするという苦い経験をしているので)

今ウチで使っているのは CakePHP です。出た当初から名前は知っていたのですが、ここにきて
- だいぶと実績も出始めたらしいこと
- 日本語コミュニティが出来て随分たったこと
- Symfonyと違ってPHP4/5の両方でかけること
- お付き合いさせて頂いている会社さんも Cake の採用を考えていたこと
んで、せっかくですし、まだまだドキュメントが充実しているとも言い難いので、それならば...という事でちょっとした小ネタでも良いからアウトプット主義でガシガシ書いていく事にしました。
前置きが長くなりましたが、まずはCakePHPのチュートリアルについて。
CakePHPを使ったアプリケーション開発のイロハを教えてくれるチュートリアル。これはCakePHPを使う人なら必ず一読して、手順を追って全く同じ事を自分の環境でもやってみるべき良い教材だと思います。CakePHPにおける開発スタイルの基本が身につきますからね。
ただ、このチュートリアルを apache の htdocs 直下ではなく、その配下の任意のディレクトリに配置して動作させる時は要注意。チュートリアルには記載のない事を2,3やらないと正しく動作しません。...という訳で、CakePHPのチュートリアルを進めていく中で
404 Not Found The requested URL /Users/yuichi/Sites/cake_tutorial/app/webroot/ was not found on this server.
とかって出てしまう場合は以下の修正を加えると巧くいきます。
CakePHPのルートにある .htaccess に RewriteBase を追加
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /~yuichi/cake_tutorial/
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
app ディレクトリの .htaccess にも RewriteBase を追加
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /~yuichi/cake_tutorial/app/
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
app/webroot ディレクトリの .htaccess にも RewriteBase を追加
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /~yuichi/cake_tutorial/app/webroot/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
これで 404 Not Found は無くなります。まぁそういう事ですね。
/ に置かれる事を前提にした mod_rewrite の設定になっているのでそこを手直ししてあげるだけ。チュートリアルは CakePHP のtarボール展開後の構造そのままで進めてますから、もちろん実際のサービス展開の場合は deployment も異なる筈なのでそこは適宜環境に合わせて変更するという事で。
配布者のポリシーに従ってURLが美しく見えるのは mod_rewrite が前提となってる framework として良いと思うのですが、こういう場合に初期段階でちょっとハマるかもですね。僕は「あれ?」と思って調べて検証するのに15分ほどロスってしまいました。

