IIS 7.0 上の PHP 5.3.0 を PHP 5.3.5 にアップデートする

SERVER


PHP 5.3.5 にアップデートする

それまでは Windows 上で PHP 5.3.5 (x86, スレッドセーフ) を利用していたのですけど、あるとき EZ-NET: IIS 7.0 上の PHP 5.3.0 で file_exists が正しく動作しない で記したように、ファイル判定関数である file_exists や is_dir 関数が正しい結果を返さないという問題に遭遇してしまったのでした。

その根本原因を突き詰めて行ってみると、どうやら PHP 5.3.5 を利用することで解決することが分ったのですけど、その際に PHP 5.3.0 から PHP 5.3.5 へアップグレードするのに思わず手間取ってしまいましたので、ここではその PHP 5.3.5 をインストールした時のお話について記してみたいと思います。

 

今回は、既に EZ-NET: IIS 7.0 で PHP を実行できるようにする で記した方法で PHP 5.3.0 がインストールされて稼働している Windows Server 2008 (x64) 上に、新たに PHP 5.3.5 をインストールするという流れで作業を行います。

PHP 5.3.5 のダウンロード

まずは PHP 5.3.5 をダウンロードするところから始めます。

PHP は、平成 23 年 2 月 12 日現在、http://www.php.net/downloads.php からダウンロードすることができるようになっていました。ここから Windows 用のバイナリーファイル (Windows Binaries) をダウンロードします。

今回は、現時点での最新版である "Installer" 版の PHP 5.3.5 (VC9 x86 Thread Safe (2011-Jan-05 21:31:04)) をダウンロードすることにしました。Web サーバーが IIS なので VC9 版をダウンロードしておきます。

 

PHP 5.3.0 のアンインストール

PHP 5.3.5 をダウンロードしたら、インストールに先立って念のため、現在インストールされている PHP 5.3.0 をアンインストールします。

旧バージョンがインストールされたまま新バージョンのインストールをおこなったところ、PHP 実行時に次のようなエラーメッセージが表示されてしまったため、先に古いものを削除しておくと良さそうでした。

"php_mbstring.dll が見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。

PHP Startup: Unable to load dynamic library 'C:\Program Files (x86)\PHP\ext\php_exif.dll' - 指定されたモジュールが見つかりません。

ちなみに DLL ファイル自体は、ちゃんと所定のフォルダー内にインストールされていたような感じはします。

 

PHP のアンインストールは、通常のアプリケーションと同様、コントロールパネルの 【プログラムと機能】(アプリケーションの追加と削除)から "PHP 5.3.0" を選択して、アンインストールを実行することで削除できました。

ただ、EZ-NET: Windows 環境で PEAR を利用できるようにする に記したような PEAR パッケージ管理ツールを PHP 5.3.0 で利用していた場合には、PHP をインストールするフォルダー内に古いファイルが残されていると、後で PEAR を再インストールする際にエラーとなる場合があったような気がしました。

大丈夫かもしれませんが、上手く行かないとあとあと面倒なので、今回はアンインストール後に "file:///C:/Program Files (x86)/PHP" フォルダー内に残ったファイルも削除しておくことにしました。

 

PHP 5.3.5 のインストールと設定

PHP 5.3.0 のアンインストールが終わったら、続いて PHP 5.3.5 のインストールを行います。

ダウンロードした "php-5.3.5-Win32-VC9-x86.msi" をダブルクリックして、PHP 5.3.5 のインストーラーを開始します。あとは、今回はインストールウィザードに従って規定値通りに、インストール作業を進めて行って、PHP のインストールは完了しました。

 

つづいて、設定ファイル "file:///C:/Program Files (x86)/PHP/php.ini" ファイルを調整します。

PHP 5.3.0 と PHP 5.3.5 とでは、あらかじめ用意されている php.ini ファイルの設定内容が異なるようでしたので、その辺りの調整を行っておくことにします。

まず、PHP 5.3.0 の時に追加した次の項目については、予め有効になっているようでしたが、念のため正しく設定されているかどうかを確認しておきます。

fastcgi.impersonate = 1

cgi.fix_pathinfo = 1

cgi.force_redirect = 0

extension_dir = "ext"

また、必要に応じてログの収集部分も調整しておきます。

error_log = "C:\temp\php.log"

date.timezone = Asia/Tokyo

そしてもうひとつ重要だったのが、必要な拡張機能を有効化するところです。

PHP 5.3.0 の時には一通り有効化された状態の php.ini が生成されたようでしたけど、PHP 5.3.5 ではこれらが無効化された状態でセットアップされるようでした。PHP 5.3.0 の時のように DLL はインストールされているので、php.ini 内で "extension" を指定すれば、それらの拡張機能を有効化することができます。

今回は、PHP 5.3.0 の設定ファイルで設定されていた内容をそのままコピーして利用することにしました。これで mb_string などの関数が利用できるようになります。

[PHP_BZ2]

extension=php_bz2.dll

 

[PHP_CURL]

extension=php_curl.dll

 

[PHP_GD2]

extension=php_gd2.dll

 

[PHP_GETTEXT]

extension=php_gettext.dll

 

[PHP_GMP]

extension=php_gmp.dll

 

[PHP_IMAP]

extension=php_imap.dll

 

[PHP_MBSTRING]

extension=php_mbstring.dll

 

[PHP_MYSQL]

extension=php_mysql.dll

 

[PHP_MYSQLI]

extension=php_mysqli.dll

 

[PHP_OPENSSL]

extension=php_openssl.dll

 

[PHP_PDO_MYSQL]

extension=php_pdo_mysql.dll

 

[PHP_PDO_ODBC]

extension=php_pdo_odbc.dll

 

[PHP_PDO_SQLITE]

extension=php_pdo_sqlite.dll

 

[PHP_PGSQL]

extension=php_pgsql.dll

 

[PHP_SOAP]

extension=php_soap.dll

 

[PHP_SOCKETS]

extension=php_sockets.dll

 

[PHP_SQLITE3]

extension=php_sqlite3.dll

 

[PHP_TIDY]

extension=php_tidy.dll

 

[PHP_XMLRPC]

extension=php_xmlrpc.dll

 

[PHP_EXIF]

extension=php_exif.dll

その他のお勧めの設定としては、エラーメッセージを PHP ページ実行時に画面に表示させるかどうかの設定でしょうか。

display_errors = On

display_startup_errors = On

この設定をすることで PHP ページのどこでエラーとなったかがすぐに分るようになるため、開発環境用として PHP をインストールしている場合には、これを有効にしておくことで開発効率が断然上がってきます。

 

php.ini 設定ファイルを編集したら、今回は PHP をインストールしたばかりというのもあるので、念のため Windows を再起動しておくことにしました。再起動しなくても動作しているようでしたけど、再起動できるサーバーであれば、念のため再起動しておくと安心なような感じがしました。

なお、その後に php.ini を調整した場合には、設定を有効化するために IIS を再起動する必要があります。しばらく待っていても新しい php.ini が読み込まれるタイミングがあるようでしたけど、意図的に反映させるためには IIS の再起動を行っておくと確実です。

 

PHP 5.3.5 のインストールが完了したら、コマンドプロンプトから次のようにして、PHP がひとまず正しく動作することを確認しておきます。

php -v

これでバージョン情報が表示されて、DLL が見つからないなどのエラーが発生しなければ、とりあえずは PHP 5.3.5 のインストールはできたことになると思います。

あと、これまで使っていた PHP 5.3.0 では PEAR というパッケージ管理ツールをインストールして利用していましたが、これを PHP 5.3.5 にインストールしようとしたら思いがけず手間取ってしまいましたので、そちらについては EZ-NET: Windows 環境の PHP 5.3.5 で PEAR を利用できるようにする で改めてお話をしてみたいと思います。