私の開発環境は次の通りです。オープンソースまたは無料で利用可能なソフトをフルに組み合わせてお金をかけずに開発を行うのが私のモットーです。^^
Windows XP(←これは無料ではないですね。。。)
Apache Web Server 2.2
MySQL 14.12
PHP 5.2.4
eclipse 3.3.2 + PDT 1.0.3 + Zend Debugger
CakePHP 1.2.0
※eclipse + PDTのインストール方法はこちらをご覧ください。
1. CakePHPのダウンロードと展開
CakePHPをダウンロードして、適当な場所に展開します。下のようなディレクトリ構造になっています。
cake_1.2.0.7296-rc2/
app/ ... 自作アプリケーションを作成するためのディレクトリ。(1)
config/
controllers/
locale/
models/
plugins/
tests/
tmp/
vendors/
views/
webroot/ ... 公開用ディレクトリ。(2)
.htaccess
index.php
cake/ ... CakePHP本体。(3)
docs/
vendors/
.htaccess
index.php
セットアップ時に特に重要なディレクトリは、(1)-(3)で示した3つです。
2. PHP Projectの作成
eclipseで、PHP Projectを作成します。CakePHPでは、
- cake: CakePHPの本体
- app: 自分で作成するアプリケーション
- webroot: Webで公開するディレクトリ
の3つをそれぞれ自由な場所に配置できるようになっています。ここではこの特徴を生かせるように、3つのPHP Projectを作成することにします。
2.1. eclipseでPHPプロジェクトを作成
eclipseで、PHP Perspectiveを開き、PHP Explorerのコンテクストメニューで、New > PHP Projectを選び、プロジェクト名をつけます。ここでは、下の3つのプロジェクトを作成します。
- cake (CakePHP本体) ... cakeプロジェクト
- awaresoft (自作アプリ用) ... APPプロジェクト
- awaresoft_public (公開ディレクトリ用) ... WEBROOTプロジェクト
自作アプリ用と公開ディレクトリ用のプロジェクト名は自由に決められますが、CakePHP本体のプロジェクトは、必ず"cake"という名前にしてください。以降、これらのプロジェクトをそれぞれcake, APP, WEBROOTプロジェクトと呼ぶことにします。
2.2. cakeプロジェクトにファイルをインポート
cakeプロジェクトに、1で展開したディレクトリ(私の場合は"cake_1.2.0.7296-rc2")の中にある"cake"ディレクトリをインポートします。PHPプロジェクトのコンテクストメニューで、Import > General > File Systemを選んでNextボタンを押します。そして、From directoryのBrowseボタンを押して、1で展開したディレクトリの下にあるcakeディレクトリを選び、チェックを入れます。Optionsは"Create selected folders only"がデフォルトで選ばれているので、そのままFinishを押して完成です。"cake"以下のファイルが全てコピーされます。
このプロジェクトは参照用のみで、一切編集することはありません。
同様に、自作アプリ用のAPPプロジェクトと、公開ディレクトリ用のWEBROOTプロジェクトにもファイルをインポートしていきます。
2.3. APPプロジェクトにファイルをインポート
APPプロジェクトには、From directoryを選ぶ際に、1で展開したディレクトリの中にある"app"というディレクトリを選びます。ここで、appの下にある"webroot"は含めないので、これだけチェックを外します。(下図参照)
2.4. WEBROOTプロジェクトにファイルをインポート
同様に、WEBROOTプロジェクトにファイルをインポートします。From directoryには、先ほどappディレクトリをインポートする時にチェックを外した"webroot"ディレクトリ(cake_1.2.0.7296-rc2/app/webroot)を選び、インポートします。
これで、3つのプロジェクトに必要なファイルが全て用意されました。
2.5. プロジェクトの参照とインクルードパスの設定
APPプロジェクトとWEBROOTプロジェクトには、cakeプロジェクトへの参照を設定します。また、インクルードパスにもcakeプロジェクトを含めるようにします。
参照設定をするには、それぞれのプロジェクトのプロパティ(プロジェクトを選択してAlt+Enter)を開いて、"Project References"を選び、cakeプロジェクトにチェックを入れます。こうしておくと、CakePHPのコアクラスから継承したメンバの補完などが利用できるようになります。(補完に関する問題についてはこちらも参照してください。)さらにインクルードパスを設定するには、それぞれのプロジェクトのプロパティの"PHP Include Path"を選び、"Add..."ボタンを押してcakeプロジェクトを追加します。この設定をしておくと、CakePHP内部で定義されている関数を呼び出す記述の上でF3キーを押すことで関数の定義にジャンプしたりできるようになります。
3. パスの設定
今作成した3つのプロジェクトが連携して動作するように、パスの設定をします。パスの設定は、WBROOTプロジェクトの下にある"index.php"で行います。
index.phpを開いて、ROOTをdefineしている次の行を探します。
if (!defined('ROOT')) {
define('ROOT', dirname(dirname(dirname(__FILE__))));
}
ここにはAPPプロジェクトのディレクトリの一つ上のディレクトリを指定します。
ところで、eclipseでプロジェクトを作成すると、eclipseのworkspaceに指定したディレクトリの下に、プロジェクト名のディレクトリができます。私の例では、ディレクトリ構成は次のようになっています。
eclipseのworkspace: C\:project\workspace
CakePHP本体のcakeプロジェクト: C:\project\workspace\cake
自作アプリ用APPプロジェクト: C:\project\workspace\awaresoft
公開用WEBROOTプロジェクト: C:\project\workspace\awaresoft_public
今回は自作アプリ用のディレクトリをeclipseのプロジェクトとして作成しましたので、その一つ上のディレクトリはeclipseのworkspaceのディレクトリになります。
defineの行をコメントアウトして、下のように書き換えてください。下の例では、'C:\project\workspace'の下にAPPプロジェクトのディレクトリがあることを想定しています。DSは実行時の環境のディレクトリセパレータ(Windowsなら"\"、Unix系OSなら"/")に置き換えられます。一番後ろにはDSをつけないことに注意してください。
if (!defined('ROOT')) {
// define('ROOT';, dirname(dirname(dirname(__FILE__))));
define('ROOT9;, 'C:' . DS . 'project' . DS . 'workspace');
}
次は、定数"APP_DIR"にAPPプロジェクトのディレクトリ名を設定します。ここではeclipseでAPPプロジェクトを作成しましたので、プロジェクト名がそのままディレクトリ名になっています。私の例では'awaresoft'になります。
APP_DIRをdefineしている行を探して、下のように書き換えます。
if (!defined('APP_DIR')) {
// define('APP_DIR', basename(dirname(dirname(__FILE__))));
define('APP_DIR', 'awaresoft');
}
最後に、CakePHP本体のディレクトリ("cake")を含むディレクトリのパスを設定します。が、今回はcakeディレクトリをeclipseのworkspaceの下に作成し、ROOTをworkspaceのディレクトリに設定しましたので、デフォルトのままで大丈夫です。(プロジェクト名をcakeにする必要があったのは、ここで設定したディレクトリの下にCakePHP本体を含む"cake"ディレクトリが存在する必要があるためです。)
念のため、CAKE_CORE_INCLUDE_PATHがdefineされている行を確認しておきましょう。
if (!defined('CAKE_CORE_INCLUDE_PATH')) {
define('CAKE_CORE_INCLUDE_PATH', ROOT);
}
これでパスの設定は完了です!
実際のWebアプリケーションへのアクセスがあったときの動きをイメージすると...
- 全てのアクセスは、Apacheのmod_rewriteにより"WEBROOT/index.php"(今編集したファイル)へのアクセスに変換される。
- WEBROOT/index.phpは、今設定したCAKE_CORE_INCLUDE_PATHを辿って、CakePHPの本体にあるdispatcher.phpにアクセスする。
- dispatcherはURLを解析し、今設定したROOT/APP_DIRを辿って必要なコントローラを探し、実行する。
- Viewが実行されて、結果がクライエントに送られる。
という感じになります。
4. Apacheにバーチャルホストの設定(オプショナル)
必要に応じて、開発環境用にApacheの設定をします。このプロジェクトにApacheを占有できるのであれば、apacheconfhttpd.confでメインのDocumentRootに設定してしまうこともできるのですが、ここではそうでない場合を想定して、バーチャルホストを使うことにします。
を参考に、開発環境用のバーチャルホストを追加してください。Windowsのsystem32\drivers\etc\hostsにホスト名を追加するのも忘れずに。バーチャルホストの設定が終わったら、Apacheを再起動します。いろいろなやり方はありますが、一つの方法としては、コマンドプロンプトから、次のように入力します。
C:>net stop apache2.2
Apache2.2 サービスを停止中です.
Apache2.2 サービスは正常に停止されました。
C:>net start apache2.2
Apache2.2 サービスを開始します...
Apache2.2 サービスは正常に開始されました。
5. 作成したページにアクセス!!
いよいよ、今作成したバーチャルホストを通して、CakePHPのスタートページにアクセスします。ブラウザのアドレス欄に、
http://(4で決めたバーチャルホスト名)/
と入力して、Enterを押してアクセスしてみてください。下のような画面が出れば成功です!
うまく表示されましたか?もしPHPのエラーメッセージが表示されてしまった場合は、6で行ったパスの設定が間違っている可能性があります。エラーメッセージをよく読んで修正してください。「ページが見つかりません」などとApacheのエラーが表示されたり、Google検索画面へ飛んでしまったりした場合は、7,8で行った設定が間違っているかもしれません。正しく設定されているか、Apacheがちゃんと起動しているかなどを確認してください。
6. データベースの設定
上でCakePHPのスタートページが表示されたら、先へ進みましょう!黄色の四角の中にNoticeやWarningのメッセージが表示されています。まずは、「データベースの設定がされていない」というメッセージに対応しましょう。
eclipseで、先ほど作成したAPPプロジェクトに、"config"というディレクトリがあり、その中に"database.php.default"というファイルがあります。このファイル名を、"database.php"に変更します。
名前の変更は、ファイルを選択した状態で、Ctrl + Shift + Rキーを押すとできます。右クリック > Refactor > Rename...でもできます。
名前を変更したら、database.phpを開いて編集します。ここには既に$defaultと$testの二つの設定が用意されていて、テスト環境と運用環境で設定を使い分けられるようになっています。切り替えはModelの$useDbConfig変数で行いますが、今はとりあえず$defaultを編集して使うことにします。MySQLを使う場合は、下の3箇所を実際のテスト環境に合わせて変更します。
'login' => '(データベースのユーザ名)',
'password' => '(データベースのパスワード)',
'database' => '(データベース名)',
編集が完了したら、保存して(Ctrl + s)もう一度CakePHPのスタートページを開いてみます。
のような表示に変わったら成功です!
7. Security.saltの設定
CakePHPのスタートページには、まだ一つ黄色のメッセージが残っています。それは、'Security.salt'を設定する必要があるという内容のものです。saltはパスワードの暗号化等に使用されるアルゴリズムで使われるもので、そのままではセキュリティが「甘い」ので「塩」をかけて少ししょっぱくするという意味があります。(←本当か!?)
APPプロジェクトの、configディレクトリに、core.phpというファイルがあるので、これを開いて、Security.saltという文字列を検索(Ctrl + F)します。そして、","の次の文字列を適当なものに置き換えます。
Configure::write('Security.salt', '(適当な文字列)');
※saltは一度決定して運用を始めたら変更してはいけません。また、すでに運用中のものをCakePHPで置き換える場合は、以前の運用にあわせる必要があります。
書き換えたら保存して再度CakePHPのスタートページを開いてみましょう。黄色いメッセージが一つもなくなれば成功です!
以上でeclipse + CakePHPでWebアプリケーションを開発する準備が整いました。次回からはこの環境を使ってアプリケーションを開発していく方法について書いていきたいと思います。







