Windows上でsymfonyを動かしてみる with xampp

symfonyをセットアップします、なんかXREAでもお願いするとインストールしてもらえるようです。が、頼む前にローカルで少し遊んでみようと思います。(いちいちftpでアップしてから確認・・が面倒なので)
http://www.symfony-project.com/askeet/ja/1が参考になります。

ローカルではxamppに頼っています。

symfonyを動作させるには

  • PEARのVersionが1.4.0以上
  • PHPのVersionが5.1.0

である必要があります。

パスを通していないのでc:\Program Files\xampp\phpに移動してpear versionを実行します

c:\Program Files\xampp\php>pear version
PEAR Version: 1.4.11
PHP Version: 5.2.1
Zend Engine Version: 2.2.0

大丈夫そうです。

次に
pear channel-discover pear.symfony-project.com
でパッケージを落とします。

c:\Program Files\xampp\php>
pear channel-discover pear.symfony-project.com
Adding Channel "pear.symfony-project.com" succeeded
Discovery of channel "pear.symfony-project.com" succeeded

成功、pear install symfony/symfonyでインストールします。

c:\Program Files\xampp\php>pear install symfony/symfony
downloading symfony-1.0.2.tgz ...
Starting to download symfony-1.0.2.tgz (1,903,264 bytes)
................................................................................
................................................................................
................................................................................
................................................................................
......................................................done: 1,903,264 bytes
install ok: channel://pear.symfony-project.com/symfony-1.0.2

1.0.2が入ったもよう、
symfony -V
でバージョンを確認できたら成功です。

C:\Program Files\xampp\php\PEAR\symfony
にファイルが展開されているはずです。

続いてプロジェクトのセットアップです。symfonyのお勉強プロジェクトであるaskeetですすめてみます。以下のコマンドでセットアップできるようです。

$ mkdir /home/sfprojects/askeet
$ cd /home/sfprojects/askeet
$ symfony init-project askeet

プロジェクトのディレクトリに移動して実行しないといけないのでしょうか、パス通していないんで・・・init-projectのパラメータを調べるのも面倒になったのであきらめてset pathでパスを一時的に設定して実行します(最初からそうすればよかった?)

H:\web\makotokw.com\labs\sandbox\askeet>Set PATH=%PATH%;"C:\Program Files\xampp\php"
H:\web\makotokw.com\labs\sandbox\askeet>symfony init-project askeet
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\apps
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\batch
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\cache
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\config
>> file+     H:\web\makotokw.com\labs\sandbox\askeet\config\config.php
>> file+     H:\web\makotokw.com\labs\sandbox\askeet\config\databases.yml
>> file+     H:\web\makotokw.com\labs\sandbox\askeet\config\propel.ini
>> file+     H:\web\makotokw.com\labs\sandbox\askeet\config\properties.ini
>> file+     H:\web\makotokw.com\labs\sandbox\askeet\config\rsync_exclude.txt
>> file+     H:\web\makotokw.com\labs\sandbox\askeet\config\schema.yml
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\data
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\data\model
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\data\sql
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\doc
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\lib
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\lib\model
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\log
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\plugins
>> file+     H:\web\makotokw.com\labs\sandbox\askeet\symfony
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\test
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\test\bootstrap
>> file+     H:\web\makotokw.com\labs\sandbo...t\test\bootstrap\functional.php
>> file+     H:\web\makotokw.com\labs\sandbox\askeet\test\bootstrap\unit.php
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\test\functional
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\test\unit
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\web
>> file+     H:\web\makotokw.com\labs\sandbox\askeet\web\.htaccess
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\web\css
>> file+     H:\web\makotokw.com\labs\sandbox\askeet\web\css\main.css
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\web\images
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\web\js
>> file+     H:\web\makotokw.com\labs\sandbox\askeet\web\robots.txt
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\web\uploads
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet\web\uploads\assets
>> tokens    H:\web\makotokw.com\labs\sandbox\askeet\config\propel.ini
>> tokens    H:\web\makotokw.com\labs\sandbox\askeet\config\properties.ini
>> tokens    H:\web\makotokw.com\labs\sandbox\askeet\config\propel.ini
>> tokens    H:\web\makotokw.com\labs\sandbox\askeet\config\config.php
>> chmod 777 H:\web\makotokw.com\labs\sandbox\askeet\cache
>> chmod 777 H:\web\makotokw.com\labs\sandbox\askeet\log
>> chmod 777 H:\web\makotokw.com\labs\sandbox\askeet\web\uploads
>> chmod 777 H:\web\makotokw.com\labs\sandbox\askeet\symfony
>> chmod 777 web\uploads\assets
H:\web\makotokw.com\labs\sandbox\askeet

できました。

続いてアプリケーションのセットアップです。先ほど作成したのはプロジェクトです。プロジェクトが複数のアプリケーションを束ねると考えればokです。

H:\web\makotokw.com\labs\sandbox\askeet>symfony init-app frontend
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet/apps/frontend\config
>> file+     H:\web\makotokw.com\labs\sandbo...et/apps/frontend\config\app.yml
>> file+     H:\web\makotokw.com\labs\sandbo.../apps/frontend\config\cache.yml
>> file+     H:\web\makotokw.com\labs\sandbo...apps/frontend\config\config.php
>> file+     H:\web\makotokw.com\labs\sandbo...s/frontend\config\factories.yml
>> file+     H:\web\makotokw.com\labs\sandbo...pps/frontend\config\filters.yml
>> file+     H:\web\makotokw.com\labs\sandbo...t/apps/frontend\config\i18n.yml
>> file+     H:\web\makotokw.com\labs\sandbo...pps/frontend\config\logging.yml
>> file+     H:\web\makotokw.com\labs\sandbo...pps/frontend\config\routing.yml
>> file+     H:\web\makotokw.com\labs\sandbo...ps/frontend\config\security.yml
>> file+     H:\web\makotokw.com\labs\sandbo...ps/frontend\config\settings.yml
>> file+     H:\web\makotokw.com\labs\sandbo...t/apps/frontend\config\view.yml
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet/apps/frontend\i18n
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet/apps/frontend\lib
>> file+     H:\web\makotokw.com\labs\sandbo...s/frontend\lib\myUser.class.php
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet/apps/frontend\modules
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet/apps/frontend\templates
>> file+     H:\web\makotokw.com\labs\sandbo...s/frontend\templates\layout.php
>> tokens    H:\web\makotokw.com\labs\sandbo...ps/frontend/config\settings.yml
>> file+     H:\web\makotokw.com\labs\sandbox\askeet\web/index.php
>> file+     H:\web\makotokw.com\labs\sandbox\askeet\web/frontend_dev.php
>> tokens    H:\web\makotokw.com\labs\sandbox\askeet\web\index.php
>> tokens    H:\web\makotokw.com\labs\sandbox\askeet\web\frontend_dev.php
>> chmod 777 H:\web\makotokw.com\labs\sandbox\askeet\cache
>> chmod 777 H:\web\makotokw.com\labs\sandbox\askeet\log
>> chmod 777 H:\web\makotokw.com\labs\sandbox\askeet\web\uploads
>> chmod 777 H:\web\makotokw.com\labs\sandbox\askeet\symfony
>> chmod 777 web\uploads\assets
>> dir+      H:\web\makotokw.com\labs\sandbox\askeet/test/functional/frontend
H:\web\makotokw.com\labs\sandbox\askeet>

続いてWebサーバの設定をします。

C:\Program Files\xampp\apache\conf\extra\httpd-vhosts.conf
に以下のVirtualHostを追加します。

<VirtualHost *:80>
  ServerName askeet
  DocumentRoot "H:\web\makotokw.com\labs\sandbox\askeet\web"
  DirectoryIndex index.php
  Alias /sf "C:\Program Files\xampp\php\pear\data\symfony\web\sf"
  <Directory "H:\web\makotokw.com\labs\sandbox\askeet\web">
   AllowOverride All
  </Directory>
</VirtualHost>

最後の手順として
C:\Windows\system32\driver\etc\hosts
に以下を追加します。

127.0.0.1         askeet

http://askeet/でページが見れたら成功です。

とくにはまることなく旨くいきました。とりあえず今日はここまで。