Windows+XamppでSymfony2開発環境を作る

第一回Symfony2勉強会のために、WindowsマシンにSymfony2の開発環境を構築したメモ [2011-10-14 もろもろ更新]

Windows版のPHP, MongoDBでSymfony2

メモリやディスクがふんだんにある場合は、VMWare等の仮想環境を使ってLinuxなりをインストールする方がいいかと思います。理由は、

  • デプロイ先の実機サーバはどのみちLinuxとかが多いだろう
  • 上にも関連するけど、各コンポーネントでWindowsでの実績が少なかったり、Windowsだけ動かないバグがあったりするかもしれない

対象は、仮想環境とか動かすといっぱいいっぱいな非力なノートPCでなんとかしたい人ぐらい。

ちなみにこの手順は2004年に買ったLet’s note R3E, Pentium M 1.1GHz, メモリ768MB, HDD40Gに、Windows XP SP3で動作確認しました。

Xamppで手っ取り早く環境を作る

Xampp使います。既にApacheやMySQLが単体で入ってたら、アンインストールか最低でも止めてください。

[更新 2011-01-31] Xampp 1.7.4が正式公開されました。以下の手順の一部の作業は不要となりました

[更新 2011-10-14] Xamppは1.7.7になってますね

Symfony2にはPHP5.3.2以上が必要ですが、最新のXampp1.7.3のPHPは5.3.1です。動きません。しょうがないので、Xamppの次のバージョン1.7.4のベータ版を入れます。これならPHPは5.3.3

Xampp beta xampp-win32-1.7.4-beta2-vc6.7z ダウンロード

ベータ版は.7zしか提供されてない…

拡張子.7z のファイルの展開。アーカイバによっては対応してないので、7-zip(32bit x86)とか入れる。7Zfm.exeを実行し、ファイル指定してc:\xamppとかに展開。

> cd \xampp
> setup_xampp.bat
適当なキーを押してインストール完了

xampp for windowsからXamppのインストーラをダウンロードして、実行

> xampp-control.exe
Apacheの[Start]を押す

ブラウザでhttp://localhost/にアクセス。xamppのページが出たらOK。「MySQL動いてないけどいいの?」みたいなことが出る。マシンに余力あればMySQLも[Start]してもよい

Symfony2のダウンロード

Sandboxのzipをダウンロード

[更新] symfony.comドメインに移っているので、Symfony.comのdownloadページからダウンロード

適当な場所に展開(c:\xampp\sandbox)

> cd \xampp\sandbox
> \xampp\php\php.exe check.php
不足している設定がエラー・警告で表示されるのでこれをつぶしていく

Apacheからsandboxを呼べるように

sandboxというドメインでアクセスすることにする。

Apacheの設定ファイルで、バーチャルホストを扱うファイルを編集

> \xampp\apache\conf\extra\httpd-vhosts.conf

NameVirtualHost *:80

# sandboxでアクセスしてきたらC:/xampp/sandbox/webにまわす
<VirtualHost *:80>
  ServerAdmin postmaster@sandbox
  DocumentRoot "C:/xampp/sandbox/web"
  ServerName sandbox
  ServerAlias www.sandbox
  ErrorLog "logs/sandbox-error.log"
  CustomLog "logs/sandbox-access.log" combined
</VirtualHost>

# ファイルへのアクセス権を与え、.htaccess等が効くようにする
<Directory "C:/xampp/sandbox/web">
  AllowOverride All
  Order deny,allow
  allow from all
</directory>

Apache再起動

ブラウザからsandboxでApacheにつながるように

hostsファイルを編集

> notepad \Windows\system32\drivers\etc\hosts

# 追加
127.0.0.1 sandbox

# Windows Vista/7とかだと、管理者として実行とかしないと書き換えられないかも

ブラウザからチェックスクリプトを実行

http://sandbox/check.php

水色で表示されたウォーニングを片付けていく

short_open_tagをオフに

“<?”のこと。これはオフにすべき。

# Xamppのデフォルト設定って…

> \xampp\php\php.ini

short_open_tag = Off
;short_open_tag = On

APCを有効にする

APCについても、Xampp 1.7.4の正式版で同梱されているので簡単になりました

ビルド済みのWindows版dllをphp_apc-3.1.5-5.3-vc6-x86.zip からダウンロード、展開

php_apc.dllをc:\xampp\php\ext にコピー

c:\xampp\php\php.ini を開いて、[PECL]の後ろに

extension=php_apc.dll

XSLTを有効にする

Propel使わないととりあえず不要っぽいけど。php.iniで、

# 追加
extension=php_xsl.dll

posix_isatty() CLI出力に色をつける

PHPのposix関数はWindowsでは使えないとマニュアルにあるので、この警告は消せない

正しいタイムゾーンの設定

何か設定してあれば警告は出ないのだけれど、実はXampp Betaのphp.iniはドイツのベルリン時刻になっている。そこで、php.iniを修正

# date.timezone = Europe/Berlin
date.timezone = Asia/Tokyo

その後ろのデフォルトlatitude/longitudeも自分の緯度経度にしておいても良い。どこで使うか知らないけど

sandboxについてきたアプリの実行

クイックツアー参照

http://sandbox/index_dev.php/

Hello, Fabienアプリ

http://sandbox/index_dev.php/hello/Fabien


MongoDBインストール

ダウンロードページ Windows 32bit

説明

今のstable最新は1.6.3。これをダウンロード (どこでもいいんだけど)c:\xamppに展開

> cd c:\xampp\mongodb-win32-i386-1.6.3
> cd bin
> mongod.exe

おっとエラー。DB置き場は手で掘らないといけない

> md \data
> md \data\db
> mongod
Windowsの警告→ブロック解除

MongoDBクライアントから確認

もういっこコンソール開く

> cd \xampp\mongodb-win32-i386-1.6.3\bin
> mongo
> 1+2
3
で良し
> Ctrl+C

PHPからMongoDBを使えるようにする

説明ここ

PHP MongoDBドライバはpeclなので、自分でビルドするか誰かがビルドしたものを持ってくるかしないといけない。ここは当然後者。ここからダウンロードする

VC6でts(スレッドセーフ)なバイナリをダウンロード mongo-1.0.10-php5.3vc6ts.zip

展開

php_mongo.dllをc:\xampp\php\ext にコピー

c:\xampp\php\php.iniを編集 [PECL]の後ろに

extension=php_mongo.dll

PHPから動作確認

Xampp-controlからApacheを再起動([stop]-[start])

http://localhost/ のxamppからphpinfo()を表示

“mongo”でページ内検索。設定が出てればOK

PHPから動作確認

適当なphpファイルを作る(mongo.php)

<?php

$mongo = new Mongo('localhost:27017');
$fuga = $mongo->hoge->fuga;
$fuga->insert(array('1' => 1));
echo $fuga->count();

実行

php mongo.php

実行のたびにエラー無く、表示される数が増えれば動いている

あとやること

Apache, (MySQL), MongoDBをWindowsサービスとしてインストールすると、PC再起動したときに動くようにできる。Apache/MySQLについてはc:\xamppの下にサービスにするコマンドがあるのでそれらを実行。