PHP をインストール [Install Maniax 3]

正月の三が日が終わった。
昨年末からのインストールマニアックス 3 は、先の記事でわかるように、ようやく IIS のインストールが終わったところだ。
1 月 12 日が締切だというのにこんなことで大丈夫だろうか。

そんなことをここで愚痴っていても仕方ない。
早い所 PHP が動くようにして、ひとつでもいいからアプリケーションをインストールするようにしよう。

ところで先回のインストールマニアックス 2009 に参加したときに使った OS は Windows Web Server 2008 である。
今回は Windows Web Server 2008 R2 なので、IIS のバージョンも 7.0 から 7.5 に上がっている。
先回は IIS をインストールした後に FastCGI のモジュールを追加でインストールし無くてはならなかったのが、今回は IIS と一緒にインストールされている。
きちんと調べていはいないが、多分 CGI (IIS-CGI) と一緒になっているのだろう。

FastCGI が入っている

PHP のインストールパッケージは例によって PHP の公式サイトからダウンロードしてくる。
現時点では PHP 5.2.12 と PHP 5.3.1 が最新のようだ。
PHP も 5.3.x が出た (2009. 1 月 30 日) 当初は、アプリケーションの対応が不十分で色々と動作に支障があったようだが、一年も経つのでアプリケーション側の対応も進んでいることだろう。
ということで PHP 5.3.1 をダンロードしてインストールする。

PHP の公式サイトにある Windows 用 PHP のダウンローページ から PHP 5.3.1 のインストールパッケージをダウンロードする。
実際にダウンロードしたのはphp-5.3.1-Win32-VC9-x86.msi だ。
今回インストールした Windows Web Server 2008 R2 は Server Core であるため、管理用のクライアントでダウンロードしてから、サーバーにコピーする。
サーバーではコマンドラインでコピーしたファイルを実行すると、ウィザード形式のインストラーが起動するのでその指示に従ってインストールを進める。

途中、「Web Server Setup」ダイアログで Web サーバーとの連携方法を聞いているが、ここでは「IIS FastCGI」を選択しておく。
「Choose Items to Install」ダイアログでは最初にチェックされているエクステンションに Fileinfo、Multi-Bite String を追加し、MySQLi を解除することにする。

image

PHP をインストールしたら C:inetpub フォルダに php というフォルダを作成して、php.ini ファイルをコピーしておく。

mkdir c:inetpubphp
copy "c:Program Files(x86)phpphp.ini" c:inetpubphp

そしてコピーした php.ini ファイルの以下の箇所を修正して保存する。

max_execution_time = 300
log_errors= On
error_log = "C:inetpublogsphp-errors.log"
extension_dir = "C:Program Files (x86)PHPext"
cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 1
fastcgi.logging = 0
upload_tmp_dir = "C:inetpubtemp"
upload_max_filesize = 20M
session.save_path = "C:inetpubtemp
date.timezone= Asia/Tokyo
mbstring.language = neutral
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = UTF-8pass
mbstring.encoding_translation = Off
mbstring.detect_order = autoUTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none
2010.1 月 11 日追記

c:inetpubtemp に php から書き込みが出きるように以下のコマンドを実行して、php を動かすアカウント IUSR に変更を許可するアクセス権を割り当てておく。

icalc "C:inetpubtemp" /grant "NT AUTHORITYIUSR":(OI)(CI)(M)
2010.2 月 16 日追記

php.ini 中の mbstring 周りの設定がどうにもあやふやだが、一応 「PHPの文字化けを本気で解決する」を参考にしてみた。

php.ini のコピーと修正、保存をしたら、インターネット インフォメーション サービス (IIS) マネージャでハンドラーマッピングと FastCGI の設定を修正する。
PHP のインストーラーによって、ハンドラーマッピングと FastCGI にはすでに PHP プログラム (C:Program Files (x86)PHPphp-cgi.exe) が登録されている。

image

そこでまずは、インストーラによって登録された FastCGI のエントリを削除しておく。
FastCGI のエントリを削除したら、次はハンドラーマッピングを開き、一覧に表示されている「PHP_vir_FastCGI」のエントリを編集する。
「PHP_vir_FastCGI」のエントリを右クリックしてコンテンツメニューから「編集...」を選ぶと、「モジュール マップの編集」ダイアログが表示される。

image

「モジュール マップの編集」ダイアログで、「実行可能ファイル (オプション)」欄に「"C:Program Files (x86)PHPphp-cgi.exe"|-c c:initpubphpphp.ini」と入力して「OK」ボタンをクリックする。
なお、ダブルコーテーションマーク (") は入力した後に改めてこのダイアログを開くと消えて無くなるのだが、プログラムパスに空白文字が含まれるので入力時にダブルコーテーションマークを忘れるとエラーになる。
「実行可能ファイル (オプション)」欄を修正して「OK」ボタンをクリックすると、FastCGI アプリケーションを作成するかを訊いてくるダイアログが表示されるので、「はい」をクリックする。

モジュールマップの編集 モジュールマップの編集後の FastCGI アプリケーション作成の確認

ハンドラーマッピングを修正してもう一度 FastCGI の設定を開くと、先程消した PHP のエントリが復活しているはずだ。
ただしよく見ると、こんどのエントリには引数欄になにやら文字が入っている。
これは、「モジュール マップの編集」の最後で FastCGI アプリケーションの作成を訊かれたときに、「はい」をクリックしたことで作成されるエントリだ。
FastCGI アプリケーションの作成で「いいえ」をクリックしてしまったときは、これと同じエントリを別途作成する必要がある。

このエントリをそのまま使うには若干の不具合があるので、少しだけ修正しておく。
エントリを右クリックしてコンテンツメニューから「編集...」を選ぶと、「FastCGI アプリケーションの編集」ダイアログが表示される。

FastCGI のエントリのコンテンツメニューで「編集」をクリック FastCGI アプリケーションの編集

「FastCGI アプリケーションの編集」ダイアログで以下の各欄をそれぞれ修正して、「OK」ボタンを押す。

アクティビティ タイムアウト
600
要求タイムアウト
600
インスタンスの MaxRequests
10000

もうひとつ、IIS のアプリケーションプールの設定を忘れてはいけない。
まずはインターネット インフォメーション サービス (IIS) マネージャで、公開するサイトで使うアプリケーションプールを確認する。
その手順はサイトを表示したら、右側の操作ペインの「サイトの編集」ブロックの「基本設定...」をクリックして表示される「サイトの編集」ダイアログで「アプリケーション プール」欄を見ればいい。
アプリケーションプールが確認できたら、「アプリケーションの既定値」ダイアログを閉じて、まずはインターネット インフォメーション サービス (IIS) マネージャの左側コンテンツツリーで「アプリケーション プール」をクリックして開く。
すると、アプリケーション プールの一覧が表示されるので、先ほど確認したアプリケーションプールを選択して、右側の操作ペインの「アプリケーション プールの編集」ブロックにある「詳細設定...」をクリックする。
表示された「詳細設定」ダイアログの「32 ビット アプリケーションの有効化」欄を「True」にして「OK」ボタンをクリックする。

image

最後に PHP がきちんと動作するか確認のために以下の内容のファイルを作成し、phpinfo.php というファイル名で IIS で公開するフォルダに保存する。

<?php
    phpinfo();
?>

保存したら Web ブラウザを使って http://コンピューター名/phpinfo.php にアクセスしてみる (Server Core に IE は入っていないので、別の PC から確認するしかない)。

関連記事

  • PHP の動作がおかしいので再インストール [Install Maniax 3]2010.1.11 (月) PHP の動作がおかしいので再インストール [Install Maniax 3] インストールマニアックス 3 も残すところ一日となって迫って焦っているところだが、ここに至って PHP がエラーになってしまいどうにもうまく動いてくれない。 MySQL の操作を Web 経由で楽に行なおうと、phpMyAdmin […]
  • phpmyadmin [Install Maniax 3]2010.1.12 (火) phpmyadmin [Install Maniax 3] インストールマニアックス 3 の予選も今日が最終日。 結局、まともの OSS アプリケーションのインストールまで漕ぎ付くことができなかった。 それでもなんとか PHP はまともに動くようになったので、かたちだけでも整えるつもりで、MySQL […]
  • ゲスト OS (Windows Web Server 2008 R2) に IIS をインストール [Install Maniax 3]2010.1.2 (土) ゲスト OS (Windows Web Server 2008 R2) に IIS をインストール [Install Maniax 3] ゲスト OS の基本的な設定が終わったので、IIS をインストールするとしよう。 Windows Web Server 2008 R2 を Full Install したのであれば、サーバーマネージャを使って IIS […]
  • OpenCart [Install Maniax 2009]2009.5.11 (月) OpenCart [Install Maniax 2009] インストールマニアックスの作業で出ていた不具合は、「Install Maniax のアクセス権の不具合が分かった!! …のか?」で解消したことにして、OpenCart をインストールしてみる。 OpenCart […]

コメントを残す