■[IT] CakePHP on XAMPPの初期設定
下北沢オープンソース Cafe http://www.osscafe.net/ で「8時間耐久CakePHP」Jelly!
2012/1/25(水) 10:00〜20:00 (途中休憩2時間)
開催内容:初心者がCakePHP使いになるまでを、Yusuke Andoさんがしごいてくれる模様です♪
https://www.facebook.com/events/279943722066633/
※図書室側は、通常Jellyです。
という案内を見かけたので・・・
何となく面白そうだったので特に何も考えず Windows マシンで参加しました。
===
私以外の参加者全員マカーという away 感たっぷり。しかしメゲナイ。 Windows が大好きだ!
何と言われようと、MAMP ではなく WAMP, WISP で動作させたい。しかし時間がない。そこで、XAMPP だ。
■環境構築:
1.必要ファイルを入手します。
– XAMPP –
http://www.apachefriends.org/jp/xampp-windows.html#2671
⇒ xampp-win32-1.7.7-VC9.zip を C:xampp へ解凍展開。
– CakePHP 2.0.5 安定板 –
https://github.com/cakephp/cakephp/zipball/2.0.5
⇒ cakephp-cakephp-2.0.5-0-g339259c.zip を C:xampphtdocscake へ解凍展開
( C:xampphtdocscake は mkdir しといてください )
—
2.XAMPP 環境ファイルを修正します。
– php.ini / PDO 廻り –
⇒ C:xamppphpphp.ini
経験則で XAMPP は エクステンション DLL を読み込めないので、明示的にロードファイルとして定義しなおす。
(C:WindowsSystem32 配下へ DLL を配置するという暴挙はしたくないw)
;extension=php_pdo_firebird.dll ;extension=php_pdo_mssql.dll ;extension=php_pdo_mysql_mysqlnd.dll ;extension=php_pdo_mysql.dll ;extension=php_pdo_odbc.dll ;extension=php_pdo_pgsql.dll ;extension=php_pdo_sqlite.dll ;extension=php_pdo_sqlite_external.dll
LoadFile C:/xampp/php/ext/php_pdo.dll LoadFile C:/xampp/php/ext/php_pdo_firebird.dll LoadFile C:/xampp/php/ext/php_pdo_mysql.dll LoadFile C:/xampp/php/ext/php_pdo_odbc.dll LoadFile C:/xampp/php/ext/php_pdo_sqlite.dll
↑ 認識しやすいように分離しましたが、実際は同一 php.ini 内です。
—
– http.conf / サービスポートの変更 –
⇒ C:xamppapacheconfhttpd.conf
※ IIS 等で TCP#80 を使用している方のみ。 私は今回 CakePHP を TCP#88 で動作させました。
単純にリッスンポートを変更するだけです。
#Listen 0.0.0.0:80 #Listen [::]:80 Listen 88
—
– Apache にファイル追加。 .htaccess –
C:xampphtdocscake.htaccess を配置します(CakePHP 動作必須です)
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule>
—
余談
Apache .htaccess に相当する IIS web.config は次の通り。
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="Imported Rule 1" stopProcessing="true"> <match url="^(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> </conditions>
<action type="Rewrite" url="index.php?url={R:1}" appendQueryString="true" />
</rule>
<rule name="Imported Rule 2" stopProcessing="true"> <match url="^$" ignoreCase="false" /> <action type="Rewrite" url="/" /> </rule> <rule name="Imported Rule 3" stopProcessing="true"> <match url="(.*)" ignoreCase="false" /> <action type="Rewrite" url="/{R:1}" /> </rule> <rule name="Imported Rule 4" stopProcessing="true"> <match url="^(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> </conditions> <action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
—
3.ここまでで初期動作確認
xampp の初期画面と phpinfo() を表示します。
その前に XAMPP コンパネアプリで、Apache と MySQL のみサービス起動します。このとき Apache started [ Port 80] と表示していますが問題ありません(このブログでは TCP#88 で動作させます)。
—
xampp の初期画面と phpinfo() を表示します。
まずは、http://localhost:88/xampp/
↓
次に、http://localhost:88/xampp/phpinfo.php
phpinfo() 内で、MySQL, PDO 項目が存在することも確認しましょう。
—
MySQL パスワード設定と DB と Table 作成しましょう。
phpMyAdmin を使ってもいいのですが、コマンドのほうが絶対に早くてカンタンなので(初期設定のみ)
赤枠内が入力内容。(既にパスワード設定済み& VS2010 x64 環境のコマンドプロンプトw)
↓
ここまでで、 cake2 という DB に FOO テーブルを作成しました。
—
仮に root パスワードが ‘hoge123’ である場合に、何らかの DB アクセスするソースがある場合
//DBの接続情報 $user = 'root'; $pass = 'hoge123'; $name = 'cake2';
このようにすれば接続可能です。
—
4.cakePHP 内のファイル修正
C:xampphtdocscakeappConfig にある core.php と database.php を修正します。
– core.php の修正 –
ふざけていません。大いに真面目です。
/**
* A random string used in security hashing methods.
*/
Configure::write('Security.salt', 'hogehoge123');
/**
* A random numeric string (digits only) used to encrypt/decrypt strings.
*/
Configure::write('Security.cipherSeed', '0120444444');
—
– databese.php の修正 –
databese.php.default から databese.php へ rename してから修正します。
class DATABASE_CONFIG { public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'root', 'password' => 'hoge123', 'database' => 'cake2', 'prefix' => '', //'encoding' => 'utf8', );
=====
以上が大体の設定内容です。
引き続き、環境構築は問題なく進行できると思います。
試しに、 http://localhost:88/cake/ で次のようにコントローラが見当たらないという表示が出れば基本的なフレームワークは動作していることが確認できます。
—
またディスパッチャな遊びになれてくると・・・
このように任意のメッセージをコントローラ単位で表示させることも出来ます。
—
php を safemode 動作させると、ワーニング表示しますが気にせずに Test Suite 2.0 を使った簡易検証を行うこともできます。
CakePHP Test Suite 2.0 は、http://localhost:88/cake/app/webroot/test.php から動作可能です。
—
引き続き、CakePHP の自己学習には @yando さんのスライドシェアをご参照ください。
⇒ http://www.slideshare.net/yandod/8cakephp
以上