PHP のアップグレード版リリースに気づいていなかった

ちょっと知っている人が見れば直ぐに分かることだし、既に何度も現況しているように、この Web サイトは WordPress を使って構築されている。
そして WordPress は PHP という言語を使って作られている。

実は 2009 年 5 月にこの Web サイトを立ち上げて以来、ずっと放ったらかしにしていたのだが、気がついたらこの Web サイトでも使っている PHP の新しいバージョンが、リリースされていた。
当時インストールした PHP のバージョンは 5.2.9 であったが、これが 5.2.11 になっている。
また、より上位の 5.3.0 すらもリリースされている。

このため、この Web サイトでも PHP のバージョンアップをすることにした。

通常ならマイナーバージョンアップになるため、上位バージョンにあたる 5.3.0 をインストールするところだ。
しかし、PHP の公式 Web サイトの「下位互換性のない変更点」や「PHP 5.3.x で推奨されない機能」に記述されている点の影響が分からないので、今回は 5.2.11 にアップデートすることにする。

試しに PHP 5.3.0 にアップデートしてみたところ、WordPress 2.8.4 では特に不具合が生じることは無さそうだった。
ついでに PHP 5.3.0 で Drupal  6.13 を動かしてみたが、「Function ereg() is deprecated******includesfile.inc895 行目」というメッセージが表示されてしまう。
このメッセージ自体は、PHP 5.3.0 で非推奨になった関数を使っていることが原因で表示されているだけなので、Drupal の動作自体には影響がないものの、どうしても気になる。

PHP インストーラーのダウンロードと実行

とにかく、PHP 5.2.11 にアップデートするために、PHP 公式サイト (英語)ダウンロードページから「PHP 5.2.11 installer (ファイル名はphp-5.2.11-win32-installer.msi)」をダウンロードする。

ダウンロードしたファイルをサーバーにコピーして、サーバー上で実行する。
以前「スキルチャージプログラム構築記 (その4)」で PHP 5.2.9 をインストールしたときと同様に、PHP を実行する Web サーバーの種類と実行方法を訊いてくる。
しかし、ここで問題が発生した。
PHP 5.2.9 をインストールしたときには在った「IIS FastCGI」という選択肢が無くなっているのだ。
以下の画像は、PHP 5.2.11 をインストールした後に、改めて別の PC (OS は Vista) を使って取得してだが、サーバー上でインストールを行ったときは左のダイアログが一瞬だけ表示され、直ぐに右のダイアログに変わってしまう。

PHP インストール時の Web サーバーの種類と実行方法の選択
Before click, PHP Web Server Setup dialog After click, PHP Web Server Setup dialog
クリック前 クリック後
(ダイアログがアクティブになったとき)

このため、本来であれば「IIS FastCGI」を選択しなくてはならないのに、それができなく成ってしまっている。
仕方がないので「IIS CGI」を選択して先に進めておこう。
実は一度「IIS ISAPI module」を選択してしまい、Fast CGI で動作させる際に必要になる php-cgi.exe がインストールされず、再インストールという事態になったので注意が必要だ。

次のインストールするモジュールの「Extentions」のところは、今までに随時追加しながら使っていた「Curl」「EXIF」「GD2」「Gettext」「IMAP」「Multi-Byte String」「MySQL」に加えて、PHP 5.2.9 より後に新たに増えた「Mcrypt」を追加しておく。
ちなみに「Multi-Byte String」「MySQL」は WordPress が、「Curl」「EXIF」「GD2」「Gettext」「IMAP」は WordPress に追加したプラグインが、そして「Mcrypt」は phpMyAdmin が要求しているエクステンションになる。

PHP の 5.2.11 へのアップデートが終了したところで、動作確認を兼ねて Web サイトをアクセスしてみる。
すると、なんと「内部エラー」で Web サイトへのアクセスができなくなっている。

どうやら IIS の FastCGI の設定が消えてしまっているために、PHP の実行ができなくなっているようだ。
これは、「Web Server Setup」(Web サーバーの種類と実行方法の選択) のダイアログ で「IIS FastCGI」を選択できず「IIS CGI」を選択せざるを得なかったことが直接の原因だと思われる。
当然このままにしておく訳にもいかないので、手作業で IIS に FastCGI の設定を行うことにする。

IIS の FastCGI の設定

IIS マネージャーを使ってサーバーのホームにある「FastCGI Setting」のアイコンをクリックして、「FastCGI Setting」の設定を表示させる。
続いて右側のペインで「Add Aplication...」のリンクをクリックして「Add FastCGI Application」ダイアログを表示する。

IIS マネージャ
Server home FastCGI Setting
サーバー ホーム FastCGI Setting

「Add FastCGI Application」ダイアログでは、「Full Path」、「InstanceMaxRquests」の各欄に以下のように入力する。

Add FastCGI Application
「Add FastCGI Application」ダイアログ
Full Path
C:Program Files (x86)PHPphp-cgi.exe
InstanceMaxRquests
10000

「Add FastCGI Application」ダイアログの各欄に入力したら「OK」ボタンをクリックして、「FastCGI Setting」に PHP の項目を登録する。

ここに挙げた作業は、コマンドラインで以下の一行のコマンドを実行するのと全く同じである。

これで FastCGI の設定はできたわけだが、これだけでは先の「内部エラー」を解消できないので、引き続き、FastCGI 同様に消えてしまっているハンドラマッピングの設定も直しておく。

IIS のハンドラマッピングの設定

IIS マネージャーを使ってサーバーのホームにある「ハンドラ マッピング」のアイコンをクリックして、「ハンドラ マッピング」の設定を表示させる。

続いて右側のペインで「モジュール マップの追加...」のリンクをクリックして「モジュール マップの追加」ダイアログを表示する。

IIS マネージャ
Server home Handler mapping
サーバー ホーム ハンドラ マッピング

「モジュール マップの追加」ダイアログでは、「要求パス」、「モジュール」、「実行可能ファイル」、「名前」の各欄に以下のように入力する。

image
「モジュール マップの追加」ダイアログ
要求パス
*.php
モジュール
FastCgiModule
実行可能ファイル
C:Program Files (x86)PHPphp-cgi.exe
名前
PHP-FastCGI

「モジュール マップの追加」ダイアログの各欄に入力したら、「要求の制限」ボタンをクリックして「要求の制限」ダイアログを表示させる。

「要求の制限」ダイアログでは、「マップ」タグにある「要求のマップ先が次の場合のみハンドラを呼び出す」チェックボックスにチェックを入れ、その下位にある「ファイルまたはフォルダ」ラジオボックスにもチェックを入れる。

「要求の制限」ダイアログの「動詞」タグ、「アクセス」タグについては規定値のままで良い。

image
「要求の制限」ダイアログ

「要求の制限」ダイアログで「OK」ボタンをクリックしてこれを閉じたら、「モジュール マップの追加」ダイアログの「OK」ボタンをクリックして、「ハンドラ マッピング」に PHP-FastCGI の項目を登録する。

ここに挙げた作業は、コマンドラインで以下の一行のコマンドを実行するのと全く同じである。

これでようやく PHP のバージョンを 5.2.11 に上げることができた。

最後に IIS の再起動をしてから、Web サイトへのアクセスを確認して完了だ。


2009.9 月 25 日追記
9 月 23 日の ELF 氏からの指摘を受けて、リンク先 URI が http://bg1.php.net/... になっていた二箇所を http://www.php.net/... に修正した。

また、同様に http://www.php.org/... に誤記していた一箇所を http://www.php.net/... に修正した。

ご指摘くださった ELF 氏に感謝します。

関連記事

  • OpenCart [Install Maniax 2009]2009.5.11 (月) OpenCart [Install Maniax 2009] インストールマニアックスの作業で出ていた不具合は、「Install Maniax のアクセス権の不具合が分かった!! …のか?」で解消したことにして、OpenCart をインストールしてみる。 OpenCart […]
  • IIS 7.0 でファイルアクセス権を割り当てるべきアカウント2009.9.27 (日) IIS 7.0 でファイルアクセス権を割り当てるべきアカウント 2009.5 月 11 日に記した「Install Maniax のアクセス権の不具合が分かった!! …のか? 」の追記になる。 上記記事で「IIS で Web […]
  • PHP の動作がおかしいので再インストール [Install Maniax 3]2010.1.11 (月) PHP の動作がおかしいので再インストール [Install Maniax 3] インストールマニアックス 3 も残すところ一日となって迫って焦っているところだが、ここに至って PHP がエラーになってしまいどうにもうまく動いてくれない。 MySQL の操作を Web 経由で楽に行なおうと、phpMyAdmin […]
  • スキルチャージプログラム構築記 (その4)2009.5.3 (日) スキルチャージプログラム構築記 (その4) その1, その2, その3と書きつづった Microsoft スキルチャージプログラムの Web サーバー導入キットの構築も後一息。 それでは、IIS に PHP を組み込み、PHP で作られた Web […]

「PHP のアップグレード版リリースに気づいていなかった」への2件のフィードバック

  1. URLがbg1.php.netだったりphp.orgだったりしますね.
    公式なものを前提としてphp.net,あるいはjp.php.net(jp2.php.net)に統一した方がいいかも.

    #そもそもphp.orgは相当違うところに(苦笑

コメントを残す