[IT] CakePHP on XAMPP の初期設定
■[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
以上








