本節は、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をインストールした後、機能を追加するために 様々な拡張モジュールの ロードを行う可能性があります。
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 モジュール |
警告 |
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:\が適当でしょう。 zipパッケージはphp-4.3.1-Win32のようなフォルダ名 で展開されます。これは後でphpに変更することを 前提にしています。利便性のために、そして以下の手順の互換性のために、 展開したPHPパッケージがc:\phpにあるものとします。 他の位置にすることもできますが、空白を含むパス (例:c:\program files\php)にすることは良いとは 言えません。Webサーバによってはクラッシュを引き起こします。 展開されたディレクトリ構造は以下のようになります:
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環境変数上のディレクトリ |
CGIまたはSAPIモジュールのどちらのインターフェースを使おう場合であっても、 ベストな方策はphp4ts.dllを有効にすることです。 そのためには、このDLLをWindowsパス上にコピーしなければなりません。 ベストなのはWINDOWSのsystemディレクトリです:
c:\windows\system for Windows 9x/ME |
c:\winnt\system32 for Windows NT/2000 or c:\winnt40\system32 for NT/2000 server |
c:\windows\system32 for Windows XP |
次の手順はphp.iniPHP設定ファイルを正しくセットすることです。 配布されるzipファイルにはphp.ini-distと php.ini-recommendedの二つのiniファイルが 含まれています。パフォーマンスとセキュリティの観点から 最適化されたデフォルト設定がなされているphp.ini-recommended のほうを使うことが推奨されます。 ini settingsをよく読んで 全ての要素を自分で設定してください。 ベストなセキュリティレベルを達成するには最善の方法です。PHPはこの iniファイルのデフォルト設定できちんと動作します。 PHPがアクセスできるディレクトリにiniファイルをコピーしてphp.iniに リネームしてください。デフォルトではPHPはWindowsディレクトリ配下で php.iniファイルを探します。
Windows 9x/ME/XPではiniファイルを %WINDIR%, つまり c:\windowsにコピーしてください。 |
Windows NT/2000ではiniファイルを %WINDIR%または%SYSTEMROOT% にコピーしてください。通常はc:\winntまたは c:\winnt40です。 |
Windows NT, 2000, XP上でNTFSを使用している場合には、Webサーバーを 実行しているユーザーがphp.iniに対するアクセス権を持っている ことを確認してください。(例えば誰でも読み込みできるようにする、等)
以下の手順は任意です。
php.iniを編集します。 OmniHTTPdを使用している場合、 次の手順には従わないで下さい。 doc_root に Web サーバーのドキュメントルートを設定して下さい。例えば:
PHPの起動時にロードしたい拡張モジュールを選択してください。 セットアップの方法や、どのモジュールがビルトインされているかについては Windows extensions をご覧ください。最初のインストールでPHPが拡張モジュールなしで正常に 動作することを確認してから、php.iniを直して拡張モジュールを有効 にするほうが賢明です。
PWS と IIS においては、browscapを 次のように指定することができます。: c:\windows\system\inetsrv\browscap.ini on Windows 9x/Me, c:\winnt\system32\inetsrv\browscap.ini on NT/2000, and c:\windows\system32\inetsrv\browscap.ini on XP.
以上がWindows上でPHPをセットアップする基本的な手順です。 次のステップではWebサーバーを選択しPHPを実行できるようにします。 以下のWebサーバーについてのインストール手順があります:
Personal Web Server(PWS)3,4以上、Insernet Information Server(IIS)3,4以上 のWindows server family。
Apache サーバー。 Apache 1.3.x, と Apache 2.x.
Netscape/iPlanetサーバー
.. the OmniHTTPd server.
.. the Oreilly Website Pro server.
.. the Sambar server.
.. the Xitami server.
説明する前に、次の質問に答えておきましょう。 "なぜ、Windows上の構築作業はこんなに面倒なのか?" 考えられる理由と しては、二つあります。
Windows では、まだソースを自由に共有することを好む開発者の大規 模なコミュニティが広まっていません。結果として、そのような開発 をサポートするために必要な基盤を構築する作業が行われていません。 利用可能な大部分のものは、UNIXから必要なユーティリティを移植し たものです。この経緯のいくつかが時々でてきますが、驚かないで下 さい。
ほとんど全ての手順は、"実行し、忘れる"形式で記述されています。 このため、端末の前に座り、以下の手順にできるだけそのまま従って試 して見て下さい。
コンパイルとビルドにはマイクロソフトの開発環境が必要です。 Microsoft Visual C++ 6.0が推奨です。ダウンロードしたファイルの解凍には 解凍ユーティリティ(例えばWinZip)が必要です。unzipユーティリティが 手元に無いのならInfoZipから無料の バージョンを取得できます。
始める前に、ダウンロードしなければならないものが大量にあります...
http://www.php.net/extra/win32build.zip上の win32ビルドツール
PHPが使用するDNSネームリゾルバのソースを http://www.php.net/extra/bindlib_w32.zip からダウンロードします。これはwin32build.zip に含まれるresolv.libの代用です。
PHPをApacheモジュールとしてコンパイルする場合には Apacheのソースも 必要です。
最後に、PHP 4自体のソースが必要となります。最新の開発版を anonymous CVSから、または snapshot、あるいは 最新のリリース版sourcetarballを ダウンロードします。
必要なパッケージを全てダウンロードしたら、 適切な位置に展開しなければなりません。
全てのファイルを最終的に展開する作業用ディレクトリを作成します。 例えばc:\work
作業ディレクトリ(c:\work)配下に win32buildディレクトリを作成し、そこで win32build.zipを解凍します。
作業ディレクトリ(c:\work)配下に bindlib_w32ディレクトリを作成し、そこで bindlib_w32.zipを解凍します。
作業ディレクトリ(c:\work)配下に PHPのソースコードを解凍します。
+--c:\work | | | +--bindlib_w32 | | | | | +--arpa | | | | | +--conf | | | | | +--... | | | +--php-4.x.x | | | | | +--build | | | | | +--... | | | | | +--win32 | | | | | +--... | | | +--win32build | | | | | +--bin | | | | | +--include | | | | | +--lib |
注意: Cygwinユーザーは最後の手順は省略しても かまいません。適切にインストールされているCygwin環境は bison.simpleとbison.exe を持っています。
次のステップは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ライブラリをビルドしなければなりません。 デバッグシンボルを有効にする(bindlib - Win32 Debug)か 否かを(bindlib - Win32 Release)決定してください。 適切な設定をビルドします。
GUIユーザーの場合、VC++を起動し、File => Open Workspace でc:\work\bindlib_w32でbindlib.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"
最良の方法は、標準的な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をビルドしてください。
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.txt、install.txtまたは this tableを 参照下さい。
PHPが拡張モジュールを探すデフォルトのディレクトリは c:\php4\extensionsです。変更するにはphp.iniファイル を編集してください:
extension_dirを拡張モジュール があるディレクトリに変更する必要があります。あるいは、 php_*.dllファイルをここに置いてください。 最後のバックスラッシュを忘れないでください。例えば:
php.iniに書かれている拡張モジュールを有効にするには、 php.ini上のextension=php_*.dllの行をアンコメントして ください。有効にしたい拡張モジュールの行の ; を削除することでできます。
例 3-3. PHP-WindowsでBzip2拡張モジュールを有効にする
|
いくつかの拡張モジュールでは、動作するのに外部のDLLを必要とします。 配布パッケージのc:\php\dlls\ディレクトリに あるものもありますが、いくつかは、例えばOracle(php_oci8.dll) は配布パッケージにバンドルされていない外部DLLを必要とします。 バンドルされているDLLをc:\php\dllsから Windowsのパスにコピーしてください。安全な位置は:
c:\windows\system for Windows 9x/Me |
c:\winnt\system32 for Windows NT/2000 |
c:\windows\system32 for Windows XP |
注意: PHPをサーバーモジュールとして実行する場合に、php.iniの設定を 反映するためにWebサーバーを再起動することを忘れないでください。
以下の表は、有効な拡張モジュールと それに必要な追加DLLのリストです。
表 3-1. PHP 拡張モジュール
Extension | Description | Notes |
---|---|---|
php_bz2.dll | bzip2圧縮関数 | None |
php_calendar.dll | Calendar変換関数 | PHP 4.0.3以降でビルトイン |
php_cpdf.dll | ClibPDF 関数 | None |
php_crack.dll | Crack 関数 | None |
php3_crypt.dll | Crypt 関数 | unknown |
php_ctype.dll | ctype family 関数 | PHP 4.3.0以降でビルトイン |
php_curl.dll | CURL, Client URL library 関数 | Requires: libeay32.dll ssleay32.dll (バンドル) |
php_cybercash.dll | Cybercash payment 関数 | PHP <= 4.2.0 |
php_db.dll | DBM 関数 | 非推奨。 DBAを代わりに使用してください (php_dba.dll) |
php_dba.dll | DBA: DataBase (dbm-style) Abstraction layer 関数 | None |
php_dbase.dll | dBase 関数 | None |
php3_dbm.dll | Berkeley DB2 library | unknown |
php_dbx.dll | dbx 関数 | |
php_domxml.dll | DOM 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.dll | Read EXIF headers from JPEG | None |
php_fbsql.dll | FrontBase 関数 | PHP <= 4.2.0 |
php_fdf.dll | FDF: Forms Data Format 関数. | Requires: fdftk.dll (バンドル) |
php_filepro.dll | filePro 関数 | Read-only access |
php_ftp.dll | FTP 関数 | Built-in since PHP 4.0.3 |
php_gd.dll | GD library image 関数 | PHP 4.3.2以降で削除. GD1では使用できないことに注意。 変わりに php_gd2.dllを使用してください。 |
php_gd2.dll | GD library image 関数 | GD2 |
php_gettext.dll | Gettext 関数 | PHP <= 4.2.0 requires gnu_gettext.dll (バンドル), PHP >= 4.2.3 requires libintl-1.dll, iconv.dll (バンドル). |
php_hyperwave.dll | HyperWave 関数 | None |
php_iconv.dll | ICONV characterset 変換 | Requires: iconv-1.3.dll (バンドル), PHP >=4.2.1 iconv.dll |
php_ifx.dll | Informix 関数 | Requires: Informix libraries |
php_iisfunc.dll | IIS management 関数 | None |
php_imap.dll | IMAP POP3 and NNTP 関数 | PHP 3: php3_imap4r1.dll |
php_ingres.dll | Ingres II 関数 | Requires: Ingres II libraries |
php_interbase.dll | InterBase 関数 | Requires: gds32.dll (バンドル) |
php_java.dll | Java 関数 | PHP <= 4.0.6 requires: jvm.dll (バンドル) |
php_ldap.dll | LDAP 関数 | PHP <= 4.2.0 requires libsasl.dll (バンドル), PHP >= 4.3.0 requires libeay32.dll, ssleay32.dll (バンドル) |
php_mbstring.dll | マルチバイト文字列 関数 | None |
php_mcrypt.dll | Mcrypt Encryption 関数 | Requires: libmcrypt.dll |
php_mhash.dll | Mhash 関数 | PHP >= 4.3.0 requires: libmhash.dll (バンドル) |
php_mime_magic.dll | Mimetype 関数 | Requires: magic.mime (バンドル) |
php_ming.dll | Ming 関数 for Flash | None |
php_msql.dll | mSQL 関数 | Requires: msql.dll (バンドル) |
php3_msql1.dll | mSQL 1 client | unknown |
php3_msql2.dll | mSQL 2 client | unknown |
php_mssql.dll | MSSQL 関数 | Requires: ntwdblib.dll (バンドル) |
php3_mysql.dll | MySQL 関数 | Built-in in PHP 4 |
php3_nsmail.dll | Netscape mail 関数 | unknown |
php3_oci73.dll | Oracle 関数 | unknown |
php_oci8.dll | Oracle 8 関数 | Requires: Oracle 8.1+ client libraries |
php_openssl.dll | OpenSSL 関数 | Requires: libeay32.dll (バンドル) |
php_oracle.dll | Oracle 関数 | Requires: Oracle 7 client libraries |
php_overload.dll | Object overloading 関数 | PHP 4.3.0以降でビルトイン |
php_pdf.dll | PDF 関数 | None |
php_pgsql.dll | PostgreSQL 関数 | None |
php_printer.dll | Printer 関数 | None |
php_shmop.dll | Shared Memory 関数 | None |
php_snmp.dll | SNMP get and walk 関数 | NT only! |
php_sockets.dll | Socket 関数 | None |
php_sybase_ct.dll | Sybase 関数 | Requires: Sybase client libraries |
php_tokenizer.dll | Tokenizer 関数 | PHP 4.3.0以降でビルトイン |
php_w32api.dll | W32api 関数 | None |
php_xmlrpc.dll | XML-RPC 関数 | PHP >= 4.2.1 requires: iconv.dll (バンドル) |
php_xslt.dll | XSLT 関数 | PHP <= 4.2.0 requires sablot.dll, expat.dll (バンドル). PHP >= 4.2.1 requires sablot.dll, expat.dll, iconv.dll (バンドル). |
php_yaz.dll | YAZ 関数 | Requires: yaz.dll (バンドル) |
php_zib.dll | Zip File 関数 | 読み込みのみ |
php_zlib.dll | ZLib compression 関数 | PHP 4.3.0以降でビルトイン |