Windowsシステムへのインストール

本節は、Windows 95/98/Me及びWindows NT/2000/XPに適用します。PHPが Windows 3.1のような16ビットのプラットフォームで動作することは期待 できません。サポートされるWindowsプラットフォームをWin32と呼ぶこと があります。Windows95はPHP4.3.0以降サポートされません。

PHPをWindowsにインストールするには、マニュアルインストールとイ ンストーラInstallShieldによる方法 の2種類があります。

Microsoft Visual Studioを持っている場合、オリジナルのソースコード からPHPを 構築するこ とも可能です。

WindowsシステムにPHPをインストールした後、機能を追加するために 様々な拡張モジュールの ロードを行う可能性があります。

Windows InstallShield

CGIバージョンのPHPをインストールする Windows 用 PHPインストーラが、 http://www.php.net/から取得可能で、IIS、PWS、 Xitamiの場合、Webサーバーの設定も同時に行われます。

注意: InstallShieldインストーラはPHPを動作させるための簡便な方法ですが、 例えば、拡張モジュールの自動設定ができないといった制約が いくつかあることに注意して下さい。サポートされる全ての拡張モジュールを 有効にするにはzipバイナリをダウンロードするしかありません。

使用するHTTPサーバーをシステムにインストールし、 完全に動作するようにして下さい。

インストーラを実行し、インストールウイザードの指示に従って下さい。 2種類のインストール方法がサポートされています。一つ目は standard で、設定の選択肢についてデフォルト値が示されます。もう一つは advanced で、選択肢について質問が行われます。

インストールウイザードは、php.ini ファイルを 設定し、Web サーバーでPHPを使用するように設定するに必要な情報を集 めます。IIS と NTワークステーションにおける PWS の場合、スクリプ トマップ設定を有するサーバーの全ノードのリストが表示され、PHPスク リプト用マッピングを追加したいと思う場所のノードを選択することが 可能です。

インストールが一旦完了すると、インストーラはシステムを再起動する か、または、単にPHPの使用を開始するかを聞いてきます。

警告

このPHPの設定は安全ではないことに注意して下さい。安全にPHPを設定 したい場合、マニュアルでインストールし、オプションを注意深く設定 する方が良いでしょう。この自動設定はPHPのインストールを瞬時に行 うことを可能としますが、オンラインのサーバで使用するためのもので はありません。

マニュアルのインストール手順

このインストール手順は、Windows上のWebサーバにPHPを手動でインストー ル、設定する際の手助けとなるものです。このガイドのオリジナルは Bob Silvaによってコンパイルされており、 http://www.umesd.k12.or.us/php/win32install.htmlにあります。 http://www.php.net/downloads.phpにある ダウンロードページからzipバイナリアーカイブを ダウンロードする必要があります。

PHP4のWindows版は、CGI版(php.exe), CLI版(sapi/php.exe), その他のSAPIモジュールの3種類があります。

php4apache.dll - Apache 1.3.x モジュール
php4apache2.dll - Apache 2.0.x モジュール
php4isapi.dll - IIS 4.0/PWS 4.0 以上のようなISAPI互換のWEBサーバ用のISAPIモジュール
php4nsapi.dll - Netscape/iPlanet モジュール

後者の形式はPHP 4で新たにサポートされたもので、性能の著しい改善と いくつかの新機能が提供されます。CLIはPHPをコマンドラインスクリプトとして 使用するために設計されました。CLIに関する詳細は PHPをコマンドラインから使用する をご覧ください。

警告

SAPIモジュールは4.1リリース以降で著しく進化しました。しかし、 より古いシステムでは、サーバーエラーの発生や、ASPのような サーバモジュールにおけるエラーが発生するかもしれません。

DCOM と MDAC の要件: SAPIモジュールのどれかを選択し、Windows 95で使用する場合には、 必ずDCOMアップデートをMicrosoft DCOM ページからダウンロードして下さい。 Windows 9x/NT4を使用している場合には プラットフォームに合う Microsoft Data Access Components (MDAC) の最新版をダウンロードしてください。MDACは http://msdn.microsoft.com/data/からダウンロードできます。

以下の手順は、個々のサーバーに関する手順の前に行う全てのインストー ルに共通する必須のものです。

c:\php
   |
   +--cli
   |  |
   |  |-php.exe           -- CLI 実行ファイル - コマンドラインスクリプトにのみ使用
   |
   |
   +--dlls                -- support dlls for extensions --> Windows system directory
   |  |
   |  |-expat.dll
   |  |
   |  |-fdftk.dll
   |  |
   |  |-...
   |
   +--extensions          -- extension dlls for PHP
   |  |
   |  |-php_bz2.dll
   |  |
   |  |-php_cpdf.dll
   |  |
   |  |-..
   |
   +--mibs                -- support files for SNMP
   |
   |
   +--openssl             -- support files for Openssl
   |
   |
   +--pdf-related         -- support files for PDF
   |
   |
   +--sapi                -- SAPI dlls
   |  |
   |  |-php4apache.dll
   |  |
   |  |-php4apache2.dll
   |  |
   |  |-php4isapi.dll
   |  |
   |  |-..
   |
   |-install.txt
   |
   |-..
   |
   |-php.exe              -- CGI 実行ファイル
   |
   |-..
   |
   |-php.ini-dist
   |
   |-php.ini-recommended
   | 
   |-php4ts.dll           -- main dll --> Windows system directory
   | 
   |-...

CGIバイナリ - C:/php/php.exe -, CLIバイナリ - c:\php\cli\php.exe -, SAPIモジュール - c:\php\sapi\*.dll - は、メインDLLである c:\php\php4ts.dllに依存しています。 PHPのインストールによってこれらのDLLが配置されます。 DLLの検索順序は以下のとおりです:

コールされたphp.exeと同じディレクトリ。 SAPIモジュールを使用している場合には、WebサーバがロードしたDLL (e.g. php4apache.dll)と同じディレクトリ。
WindwosのPATH環境変数上のディレクトリ

以下の手順は任意です。

以上がWindows上でPHPをセットアップする基本的な手順です。 次のステップではWebサーバーを選択しPHPを実行できるようにします。 以下のWebサーバーについてのインストール手順があります:

Building from source

説明する前に、次の質問に答えておきましょう。 "なぜ、Windows上の構築作業はこんなに面倒なのか?" 考えられる理由と しては、二つあります。

  1. Windows では、まだソースを自由に共有することを好む開発者の大規 模なコミュニティが広まっていません。結果として、そのような開発 をサポートするために必要な基盤を構築する作業が行われていません。 利用可能な大部分のものは、UNIXから必要なユーティリティを移植し たものです。この経緯のいくつかが時々でてきますが、驚かないで下 さい。

  2. ほとんど全ての手順は、"実行し、忘れる"形式で記述されています。 このため、端末の前に座り、以下の手順にできるだけそのまま従って試 して見て下さい。

要件

コンパイルとビルドにはマイクロソフトの開発環境が必要です。 Microsoft Visual C++ 6.0が推奨です。ダウンロードしたファイルの解凍には 解凍ユーティリティ(例えばWinZip)が必要です。unzipユーティリティが 手元に無いのならInfoZipから無料の バージョンを取得できます。

始める前に、ダウンロードしなければならないものが大量にあります...

最後に、PHP 4自体のソースが必要となります。最新の開発版を anonymous CVSから、または snapshot、あるいは 最新のリリース版sourcetarballを ダウンロードします。

Putting it all together

必要なパッケージを全てダウンロードしたら、 適切な位置に展開しなければなりません。

  • 全てのファイルを最終的に展開する作業用ディレクトリを作成します。 例えばc:\work

  • 作業ディレクトリ(c:\work)配下に win32buildディレクトリを作成し、そこで win32build.zipを解凍します。

  • 作業ディレクトリ(c:\work)配下に bindlib_w32ディレクトリを作成し、そこで bindlib_w32.zipを解凍します。

  • 作業ディレクトリ(c:\work)配下に PHPのソースコードを解凍します。

Following this steps your directory structure looks like this: 以上の手順により、ディレクトリ構造は次のようになります:

+--c:\work
|  |
|  +--bindlib_w32
|  |  |
|  |  +--arpa
|  |  |
|  |  +--conf
|  |  |
|  |  +--...
|  |
|  +--php-4.x.x
|  |  |
|  |  +--build
|  |  |
|  |  +--...
|  |  |
|  |  +--win32
|  |  |
|  |  +--...
|  |
|  +--win32build
|  |  |
|  |  +--bin
|  |  |
|  |  +--include
|  |  |
|  |  +--lib

c:\usr\local\libディレクトリを作成します。 bison.simplec:\work\win32build\binから c:\usr\local\libにコピーします。

注意: Cygwinユーザーは最後の手順は省略しても かまいません。適切にインストールされているCygwin環境は bison.simplebison.exe を持っています。

Configure MVC ++

次のステップはMVC++でコンパイルする準備です。 Microsoft Visual C++を起動し、ディレクトリタブを選択します。 実行形式、include、ライブラリのファイルが順次変更されます。 以下のようになります:

  • 実行形式ファイル: c:\work\win32build\bin, Cygwinユーザー: cygwin\bin

  • Include files: c:\work\win32build\include

  • Library files: c:\work\win32build\lib

resolv.libのビルド

resolv.libライブラリをビルドしなければなりません。 デバッグシンボルを有効にする(bindlib - Win32 Debug)か 否かを(bindlib - Win32 Release)決定してください。 適切な設定をビルドします。

  • GUIユーザーの場合、VC++を起動し、File => Open Workspace でc:\work\bindlib_w32bindlib.dsw を選択します。そしてBuild=>Set Active Configurationを選択し お望みの設定を施してください。最後にBuild=>Rebuild All します。

  • コマンドラインユーザーの場合、C++環境変数が設定されているかあるいは vcvars.batを既に実行したか、確認してください。 そして、以下のコマンドを実行します。

    • msdev bindlib.dsp /MAKE "bindlib - Win32 Debug"

    • msdev bindlib.dsp /MAKE "bindlib - Win32 Release"

この時点で、使用可能なresolv.libc:\work\bindlib_w32\Debugまたは Releaseサブディレクトリのどちらかに存在します。 このファイルをc:\work\win32build\libディレクトリの 同名のファイルに上書きコピーしてください。

コンパイル

最良の方法は、標準的なCGIバージョンをビルドすることです。

  • GUIユーザの場合、VC++を起動し、ファイル => ワークスペースを 開くを選択し、c:\work\php-4.x.x\win32\php4ts.dsw を選びます。続いて、構築=>アクティブな 構成を設定を選び、php4ts - Win32 Debug_TS php4ts - Win32 Release_TSから好きなほうを 選択します。最後に構築=>全て構築を選択します。

  • コマンドライン版ユーザの場合、C++ 用の環境変数が定義されている かどうか、もしくは、vcvars.batを実行しているか どうか確認してください。そしてc:\work\php-4.x.x\win32 ディレクトリから続いて次のうちのどれかを実行して下さい。

    • msdev php4ts.dsp /MAKE "php4ts - Win32 Debug_TS"

    • msdev php4ts.dsp /MAKE "php4ts - Win32 Release_TS"

    • ここまでの手順で、サブディレクトリ c:\work\php-4.x.x.\Debug_TS または Release_TS に利用可能な php.exe が作成されているはずです。

main/config.win32.hファイルを編集することで ビルドプロセスでの細かい設定をすることが可能です。 例えば、php.iniのデフォルトの位置を変えたり、ビルトインの拡張モジュールや 拡張モジュールのデフォルトの位置を変えることができます。

次に、PHPをコマンドラインから使用する ためのCLIバージョンを構築します。 php4ts_cli - Win32 Debug_TSまたは php4ts_cli - Win32 Release_TSを選択すること以外は CGIバージョンのビルド手順と同様です。コンパイルが成功すると Release_TS\cli\または Debug_TS\cli\ディレクトリのどちらかに php.exeが作成されます。

注意: PEARとその快適なコマンドラインインストーラを使用するには、 CLI-SAPIが必要です。PEARとそのインストーラに関する詳細は PEARをご覧ください。

Microsoft IIS上でPHPアプリを構築するためのSAPIモジュール (php4isapi.dll)をビルドするには、 アクティブコンフィグレーションをphp4isapi-whatever-config にセットし、お望みのDLLをビルドしてください。

Windows 用拡張モジュールのインストール

PHPおよびWebサーバをWindowsにインストールした後、特定のモジュール を使用したくなる場合もあるでしょう。php.iniによって PHPが起動する際にロードする拡張モジュールを選択することができます。 スクリプトの中でdl()を使用することにより、モ ジュールを動的にロードすることも可能です。

PHP拡張モジュールのDLLには、PHP 4の場合、前に'php_'(PHP 3の場合は、' php3_')が付いています。これにより、PHP拡張モジュールを他のサポー ト用ライブラリと混同することが防止できます。

注意: PHP 4.3.1では、BCMath, Calendar, COM, FTP, MySQL, ODBC, PCRE, Session, WDDX, XML サポートが組み込まれています。 これらの関数を使用する際に、拡張モジュールをロードする必要はありません。 組込済モジュールのリストについては、配布ファイルの README.txtinstall.txtまたは this tableを 参照下さい。

PHPが拡張モジュールを探すデフォルトのディレクトリは c:\php4\extensionsです。変更するにはphp.iniファイル を編集してください:

注意: PHPをサーバーモジュールとして実行する場合に、php.iniの設定を 反映するためにWebサーバーを再起動することを忘れないでください。

以下の表は、有効な拡張モジュールと それに必要な追加DLLのリストです。

表 3-1. PHP 拡張モジュール

ExtensionDescriptionNotes
php_bz2.dllbzip2圧縮関数None
php_calendar.dllCalendar変換関数PHP 4.0.3以降でビルトイン
php_cpdf.dllClibPDF 関数None
php_crack.dllCrack 関数None
php3_crypt.dllCrypt 関数unknown
php_ctype.dllctype family 関数PHP 4.3.0以降でビルトイン
php_curl.dllCURL, Client URL library 関数Requires: libeay32.dll ssleay32.dll (バンドル)
php_cybercash.dllCybercash payment 関数PHP <= 4.2.0
php_db.dllDBM 関数非推奨。 DBAを代わりに使用してください (php_dba.dll)
php_dba.dllDBA: DataBase (dbm-style) Abstraction layer 関数None
php_dbase.dlldBase 関数None
php3_dbm.dllBerkeley DB2 libraryunknown
php_dbx.dlldbx 関数 
php_domxml.dllDOM XML 関数 PHP <= 4.2.0 requires: libxml2.dll (バンドル) PHP >= 4.3.0 requires: iconv.dll (バンドル)
php_dotnet.dll.NET 関数PHP <= 4.1.1
php_exif.dllRead EXIF headers from JPEGNone
php_fbsql.dllFrontBase 関数PHP <= 4.2.0
php_fdf.dllFDF: Forms Data Format 関数.Requires: fdftk.dll (バンドル)
php_filepro.dllfilePro 関数Read-only access
php_ftp.dllFTP 関数Built-in since PHP 4.0.3
php_gd.dllGD library image 関数 PHP 4.3.2以降で削除. GD1では使用できないことに注意。 変わりに php_gd2.dllを使用してください。
php_gd2.dllGD library image 関数GD2
php_gettext.dllGettext 関数 PHP <= 4.2.0 requires gnu_gettext.dll (バンドル), PHP >= 4.2.3 requires libintl-1.dll, iconv.dll (バンドル).
php_hyperwave.dllHyperWave 関数None
php_iconv.dllICONV characterset 変換Requires: iconv-1.3.dll (バンドル), PHP >=4.2.1 iconv.dll
php_ifx.dllInformix 関数Requires: Informix libraries
php_iisfunc.dllIIS management 関数None
php_imap.dllIMAP POP3 and NNTP 関数PHP 3: php3_imap4r1.dll
php_ingres.dllIngres II 関数Requires: Ingres II libraries
php_interbase.dllInterBase 関数Requires: gds32.dll (バンドル)
php_java.dllJava 関数PHP <= 4.0.6 requires: jvm.dll (バンドル)
php_ldap.dllLDAP 関数 PHP <= 4.2.0 requires libsasl.dll (バンドル), PHP >= 4.3.0 requires libeay32.dll, ssleay32.dll (バンドル)
php_mbstring.dllマルチバイト文字列 関数None
php_mcrypt.dllMcrypt Encryption 関数Requires: libmcrypt.dll
php_mhash.dllMhash 関数PHP >= 4.3.0 requires: libmhash.dll (バンドル)
php_mime_magic.dllMimetype 関数Requires: magic.mime (バンドル)
php_ming.dllMing 関数 for FlashNone
php_msql.dllmSQL 関数Requires: msql.dll (バンドル)
php3_msql1.dllmSQL 1 clientunknown
php3_msql2.dllmSQL 2 clientunknown
php_mssql.dllMSSQL 関数Requires: ntwdblib.dll (バンドル)
php3_mysql.dllMySQL 関数Built-in in PHP 4
php3_nsmail.dllNetscape mail 関数unknown
php3_oci73.dllOracle 関数unknown
php_oci8.dllOracle 8 関数Requires: Oracle 8.1+ client libraries
php_openssl.dllOpenSSL 関数Requires: libeay32.dll (バンドル)
php_oracle.dllOracle 関数Requires: Oracle 7 client libraries
php_overload.dllObject overloading 関数PHP 4.3.0以降でビルトイン
php_pdf.dllPDF 関数None
php_pgsql.dllPostgreSQL 関数None
php_printer.dllPrinter 関数None
php_shmop.dllShared Memory 関数None
php_snmp.dllSNMP get and walk 関数NT only!
php_sockets.dllSocket 関数None
php_sybase_ct.dllSybase 関数Requires: Sybase client libraries
php_tokenizer.dllTokenizer 関数PHP 4.3.0以降でビルトイン
php_w32api.dllW32api 関数None
php_xmlrpc.dllXML-RPC 関数PHP >= 4.2.1 requires: iconv.dll (バンドル)
php_xslt.dllXSLT 関数 PHP <= 4.2.0 requires sablot.dll, expat.dll (バンドル). PHP >= 4.2.1 requires sablot.dll, expat.dll, iconv.dll (バンドル).
php_yaz.dllYAZ 関数Requires: yaz.dll (バンドル)
php_zib.dllZip File 関数読み込みのみ
php_zlib.dllZLib compression 関数PHP 4.3.0以降でビルトイン