Symfony を Apache on Windows で使う

Date
2007-08-22 (Wed)
Category
symfony

もう2年も前になってしまうのですが、とあるグループのイントラネットで動くタスクマネジメントソフトを作った事がありました。そこの方々とは、ご縁あってその後もいろいろおつきあいさせてもらっています。この仕事ではマネージャが居てその人がうまくやってくれている、というのが大きいんだと思うんですが。

ともかく。その僕の作ったマネジメントソフトを書き直す作業を暫くやっていました。その当時としてはまだ珍しかった? Ajax でデータベースからデータを取り出して云々という感じ。まだまだ未熟だった僕は、自作の XML 生成クラスとか作っていたし、見た目にはほとんど気がつかわれなく、Javascript はコピペかつ何をしているのかよくわからない…それはそれは酷いコードを書いていました(一方データベースの設計は悪くなかった、コラム/テーブルの命名はまぁ old fashion だったけれど)。

せっかくなので、全て Symfony を使って書き直してみました。たしか2ヶ月くらいは掛かっていたと思うのだけれど、今回は3週間くらいかな。これなら拡張も容易に出来そうだし、結構満足しています。

ところが最後の最後でつまずいた、というか前に一度やって、つまづくポイントが多かったのをすっかり忘れていた、Windows での Symfony の deploy を今回少しまとめておきたいと思います。

前提

Apache はそれこそインストーラ一発だし、MySQL は名前付きパイプなど、変な事をしなければ、インストーラが全てやってくれます。PHP だけはファイルレイアウトなどに気を遣うかもしれませんが、まぁそれはまた別の機会にでも。php.exe (CLI) のある directory へ Path が通っていた方が便利ですが、それも必須ではありません。

手順

  1. pear のインストール
    Windows では、go-pear.bat という起動すればいいだけ、のはずなんですが、環境にあわせて手直しする必要がありました。こんな感じに。
    @ECHO OFF
    set PHP_BIN=php.exe
    set PHP_INI=C:\etc\php\php.ini
    %PHP_BIN% -c %PHP_INI% -d output_buffering=0 PEAR\go-pear.phar
    pause
    まずこの変更は、インストール完了時に WARNING を出させないためです。なくても大丈夫、のはず(もちろん PEAR のインストールされる先が、include_path に組み込まれていなければ、WARNING はでます)。
    あと僕は global 環境変数、というのがキライです。バージョンアップをする時、十分な引き継ぎなく誰かのサポートをする時、global 環境変数に何か書いてあったりすると、非常に厄介。なので、PHP も PEAR にも registry は使わせません。確認されますが、断固として Local インストールです。
  2. pear.ini の変更
    Local 派はここでも少し手を加えます。php.iniの場所をpear.ini 内に書いておかないと、extension などがうまく動きません。
    pear.ini は PHP の Array を serialize したものです。JSON ほど簡単ではないかもしれないけれど、馴れれば手で書けます。大事なのはその array に、php_ini というキーで、php.ini への file path を書き入れる事です。
    #PEAR_Config 0.9
    a:11:{
    s:15:"preferred_state";s:6:"stable";
    s:7:"php_ini";s:23:"C:\etc\php\php.ini";
    ....
    }
  3. C:\path\to\pear -c C:\etc\php\pear.ini DO_WHATEVER
    という感じで、-c オプションで、pear.ini へのパスを渡してやります。そうすることで Local 設定を有効にして、作業できます。あとは unix と同じ、channel-discover / install で完了

あとは、Symfony の project を(絶対パス指定)symfony コマンドで作ってから、同じ directory に以下のような symfony.bat を作っておくと、いちいち full path を打たなくてすみます。

@echo off
SET PHP_COMMAND=C:\php\php.exe SET PHP_INI=C:\etc\php\php.ini
@setlocal
%PHP_COMMAND% -c %PHP_INI% -d html_errors=off -d open_basedir= -q ".\symfony" %1 %2 %3 %4 %5 %6 %7 %8 %9
if "%OS%"=="Windows_NT" @endlocal

Comment:0

Comment Form

Remember Me?


Trackback:0

TrackBack URL for this entry
http://blogs.grf-design.com/mt/mt-tb.cgi/230
Listed below are links to weblogs that reference
Symfony を Apache on Windows で使う from The Croton

Return to Page Top