« 続・CakePHPと文字化け | メイン | Helperを作ってみる »

複数のappフォルダ

以前にEclipseとPDTの環境を作ることを調べたときに,MilkyJoeが書いていた次の文章がずっと気になっていました。

I follow the Cake convention of storing all my CakePHP projects in the Cake root directory (making a copy of /app, renaming it, and changing the constant APP_DIR in /app/webroot/index.php to the name of my directory). You should probably follow this convention as well.

appフォルダのコピーを作成してリネームするとういのがCakeの慣例だと言っています。僕はこれまではappフォルダの内容を直接さわっていましたが,是非その慣例には従いたいものです。いろいろと実験が終わったので,再度Cake開発環境を再構築することにしましたので,複数のappフォルダを持った場合の動きについて調べてみました。

図のようなフォルダ構成で,scheduleというフォルダがappフォルダのコピーになります。これでどのURLにアクセスしたらのアプリケーションが実行されるのかを調べてみます。appフォルダ,scheduleフォルダのそれぞれの viwes/layouts フォルダに default.thtml を配置し,そのタイトル部分を変更することでどのフォルダのアプリケーションが実行されているのかを判断しました。

http://localhost/cake/app/

では当然ながらappフォルダのアプリケーションが実行されました。ですから,

http://localhost/cake/schedule/

ではscheduleフォルダのアプリケーションが実行されます。

http://localhost/cake/

の場合は,appフォルダのアプリケーションが実行されます。これはルートフォルダにある.htaccessが次のようになっているためです。 

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

ルートフォルダへのアクセスは,app/webrootに回されますから,app/webrootにあるindex.phpが実行されるわけです。
appフォルダ(あるいはscheduluフォルダ)にある.htaccessは次のようになっています。このフォルダにもindex.phpがあるのですが,rewriteが効いている限り実行されないと思います。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>

ここでは現在のフォルダ下のwebrootにあるindex.phpが実行されます。

ちなみに,冒頭で引用した文章でMilkyJoeは,APP_DIR in /app/webroot/index.php の中のAPP_DIR定数を変更しろと書いていますが,その部分のコードはwebrootにあるindex.phpでは

    if (!defined('APP_DIR')) {
        //define('APP_DIR', 'DIRECTORY NAME OF APPLICATION';
        define('APP_DIR', basename(dirname(dirname(__FILE__))));

と,index.phpの場所からAPP_DIRを設定するようになっているので,webrootがappフォルダの下にある限り書き換える必要はありません。公開環境ではこういうところを色々と設定する必要があるでしょう。

開発環境で複数のアプリを開発するときには,appフォルダをコピーしてリネームすれば,動作させるにはそのフォルダ名までURLで指定してやればOKだということがわかりました。

EclipseのWorkspaceについて

以前のエントリ「すべてのインストールメモ」にて,

Eclipseを起動したときに「Select workspace」と表示されます。MilkyJoeによれば,ここではwebサイトのドキュメントルート(C:\xampp\htdocs)を指定するのがよいと言っています。実はこれ僕としてはC:\xampp\htdocs\cakeを指定した方が楽なような気がします。そこであえてMilkyJoeに逆らって設定してみます。

としました。結果的にこれで困ることはないようです。僕の場合はドキュメントルートの下にcakeフォルダを作りそこにCakePHP1.18を入れ,cake12フォルダには1.2を入れています。それらの間を切り替えるにはWorkspaceを変更しています。それが面倒な場合は,MilkyJoeの言うようにドキュメントルートをWorkspaceにする方がいいでしょう。


« 続・CakePHPと文字化け | メイン | Helperを作ってみる »

関連するエントリー

トラックバック

このエントリーのトラックバックURL:
http://mt.sunvisor.net/mt-tb.cgi/59

コメントを投稿

About

2007年11月28日 10:44に投稿されたエントリーのページです。

ひとつ前の投稿は「続・CakePHPと文字化け」です。

次の投稿は「Helperを作ってみる」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

オススメの本

CakePHP初の公認ガイドブック。まずこれを読む。

CakePHPでの開発の際には常に机上に準備するべし。

CakePHP 1.2を使い始めるならこの本が必携。

2008年12月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

最近のコメント

最近のトラックバック

Powered by
Movable Type 3.35