![]() |
|
The symfony CookbookIIS上でsymfonyをインストールする |
|

You are currently reading "The symfony Cookbook" which is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License license.
|
This work is licensed under a
Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Translation of this work into another language is explicitly allowed. |
もちろん、ウェブサーバーに関してApache以外の選択肢があります。それがIIS上にsymfonyをインストールする方法のチュートリアルを見る理由です。
最初に、PEARパッケージを行進して下さい。チャネルを取り扱うためにバージョン1.4.0以降が必要だからです:
$ pear upgrade PEAR
それからsymfonyのチャネルを追加して下さい:
$ pear channel-discover pear.symfony-project.com
ベータバージョン0.5.73以降のsymfonyをインストールして下さい:
$ pear install symfony/symfony-beta
phingパッケージがない場合、同じようにインストールする必要があります:$ pear install http://phing.info/pear/phing-current.tgz
詳細な内容はsymfonyのインストール方法の章を調べて下さい。
プロジェクトのディレクトリ(c:\myprojectを使う場合)とmyappと呼ばれるアプリケーションのための基本的なツリー構造を作るために、コマンドコンソールを開き次の内容を入力して下さい:
$ cd c:\myproject
$ symfony init-project myproject
$ symfony init-app myapp
これから2つの設定オプションを考えます:
最初の場合、ウェブサーバーはsymfonyのプロジェクトのみに使われ、URLはhttp://myproject/のようなものだけです。myappディレクトリを作成したディレクトリがc:\myproject\であることを前提として、(IISの管理コンソール内で)ウェブサーバーのrootディレクトリをc:\myproject\webに設定します。
他のオプションはサーバーの1つの(おそらくはバーチャルの)ディレクトリのsymfonyプロジェクトをインストールすることで、URLはhttp://myserver/myproject/のようなものになります。IISの管理コンソール内で、c:\myproject\webディレクトリに対してウェブサイトのroot上に新しいバーチャルディレクトリを作ります。
バーチャルディレクトリをサーバーのメインディレクトリに追加します。これをsfと名付けpearディレクトリのdata\symfony\web\sfに設定します。デフォルトの設定でPHP5をc:\php5にインストールした場合、フルパスはc:\php5\PEAR\pear\data\symfony\web\sfです。
isapi/rewriteがサーバーにインストールされ機能していることを前提とします。まだISAPIを購入していないので、設定するのは1つのhttpd.iniファイルのみです。設定は以前定義したオプションに依存します:
我々が必要なhttp://myproject/のようなURLに対して:
# ワーム攻撃からコンピュータを守る RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O] # .html以外の.something拡張子を持つファイルをすべてスキップする RewriteCond URL .*\..+$ RewriteCond URL (?!.*\.html$).* RewriteRule (.*) $1 [L] # .phpファイルはそのままにする RewriteRule (.*\.php)(.*) $1$2 [L] # 最後にフロントウェブコントローラにリダイレクトする RewriteRule (.*) /index.php [L]
我々が必要なhttp://myserver/myproject/のようなURLに対して:
# ワーム攻撃からコンピュータを守る RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O] # .html以外の.something拡張子を持つファイルをすべてスキップする RewriteCond URL /myproject/.*\..+$ RewriteCond URL (?!/myproject/.*\.html$).* RewriteRule /myproject/(.*) /myproject/$1 [L] # .phpファイルはそのままにする RewriteRule /myproject/(.*\.php)(.*) /myproject/$1$2 [L] # 最後にフロントウェブコントローラにリダイレクトする RewriteRule /myproject/(.*) /myproject/index.php [L]
IISを再起動します
最後のステップはsymfonyプロジェクトのconfigディレクトリ内に設置されたsettings.ymlファイルを編集することです(我々の例ではc:\myproject\apps\myapp\config\です)。2つのオプションが少々異なっていることを発見しても驚かないでしょう:
http://mproject/のようなURLに対しては、下記の行が必要です:
all:
.settings:
path_info_key: HTTP_X_REWRITE_URL
http://myserver/myprojectのようなURLに対しては、下記の行が必要です:
all:
.settings:
path_info_key: HTTP_X_REWRITE_URL
Important note: isapi/rewrite/を使わない場合、
HTTP_X_REWRITE_URLは間違っている可能性があります。symfonyの設定方法を知るために詳細なテストを作らなければなりません。プロジェクトのwebディレクトリ内のmyapp_dev.phpファイル(もしくはwhatever you named your application_dev.php)を開き、次の2行を追加します:print phpinfo(); die();では次のURL:
http://myproject/myapp_dev.php/test/rewrite(もしくは設定に依存するhttp://myserver/myproject/myapp_dev.php/test/rewrite)を開き、PHP変数を見ます。_SERVER["PATH_INFO"]が/test/rewriteと等しい場合、settings.ymlファイルからpath_info_key行を削除するか、この値(isapi/rewriteに対するHTTP_X_REWRITE_URL)を含む変数の名前を探さなければなりません。以前の2行を除去すれば、symfonyの準備が整います。
symfonyプロジェクトはいくつかのアプリケーションを含みます。デフォルトの設定において、すべてのアプリケーションは同じCSSとアップロードディレクトリを共有します。これを変更し、myappアプリケーションに対して個別のディレクトリを作ります。以前のオプションを考慮して、次のURL: http://myproject/myapp と http://myserver/myappを実現することにします。今回、これらのオプション間の設定に違いはありません。
symfonyプロジェクトのwebサブディレクトリ内にmyappサブディレクトリを作ります(我々の場合c:\myproject\web\myappです)。
index.phpとmyapp_dev.phpファイルをこのディレクトリにコピーし、cssとuploadsという名前の2つのディレクトリを作ります。
IISの管理コンソール内で、myappという名前のサーバーのroot上に新しいバーチャルディレクトリを作ります。このバーチャルディレクトリをc:\myproject\myappに設定します。
httpd.iniファイルの最後で次の行を追加して下さい:
#[myappに直接アクセスするための設定]
# .html以外の.something拡張子を持つファイルをすべてスキップする
RewriteCond URL /myapp/.*\..+$
RewriteCond URL (?!/myapp/.*\.html$).*
RewriteRule /myapp/(.*) /myapp/$1 [L]
# .phpファイルはそのままにする
RewriteRule /myapp/(.*\.php)(.*) /myapp/$1$2 [L]
# 最後にフロントウェブコントローラにリダイレクトする
RewriteRule /myapp/(.*) /myapp/index.php [L]
myappアプリケーションのsettings.ymlファイル(c:\myproject\apps\myapp\config\settings.yml)を編集し次の行を追加します:
all:
.settings:
path_info_key: HTTP_X_REWRITE_URL
(HTTP_X_REWRITE_URLに関する前回のノートを参照)
最後に、フロントコントローラ(c:\myproject\web\myapp内のindex.phpとmyapp_dev.php)の両方を編集し変更します:
define('SF_ROOT_DIR', realpath(dirname(__FILE__).'/..'));
上記のコードを以下のようにします:
define('SF_ROOT_DIR', realpath(dirname(__FILE__).'/../..'));
これでお終いです。うまくゆきました。
If you find a typo or an error, please register and open a ticket.
If you need support or have a technical question, please post to the user mailing-list or to the forum.