Windows では、PHP の拡張モジュールを読み込む方法は 2 通りあります。 コンパイル時に PHP に組み込む方法と、DLL として読む込む方法です。 コンパイル済みの拡張モジュールを読み込む方法のほうが簡単で、おすすめです。
拡張モジュールを読み込むには、".dll" ファイルをシステム上に用意する必要があります。 すべての拡張モジュールは、PHP Group によって定期的に自動コンパイルされています (ダウンロード先は次の節を参照ください)。
コンパイル時に拡張モジュールを PHP に組み込む方法については、 ソースからのビルド に関するドキュメントを参照ください。
単体の拡張モジュール (DLL ファイル) をコンパイルする方法については ソースからのビルド に関するドキュメントを参照ください。 PHP の配布パッケージにも PECL にも DLL ファイルが存在しなければ、 まずコンパイルをしないとその拡張モジュールは使えないでしょう。
PHP の拡張モジュールは、通常は "php_*.dll" (* の部分に拡張モジュールの名前が入ります) という名前で "PHP\ext" フォルダに存在します。
PHP には、大半の開発者にとって有用である拡張モジュールが同梱されています。 これらは "コア" 拡張モジュールと呼ばれます。
しかし、コア拡張モジュールに含まれない機能が必要となった場合はそのモジュールを PECL で探す必要があります。 The PHP Extension Community Library (PECL) は PHP 拡張モジュール用のリポジトリで、すべての拡張モジュールの一覧機能や PHP 拡張モジュールのダウンロードの仕組みを提供します。
自分で拡張モジュールの開発をしている方は、 それを PECL で公開して他の人たちにも使ってもらいたいと思われることでしょう。 そうすれば、彼らからフィードバックを得たり (うまくいけば) 感謝の言葉をもらえたり、バグレポートやバグ修正パッチをもらえたりするかもしれません。 自作の拡張モジュールを PECL で公開したい場合は » PECL submit を参照ください。
各 DLL について、いくつかのバージョンが見つかることがあります。
注意して欲しいのは、拡張モジュールの設定とそれを動かす PHP 実行ファイルの設定をそろえておかなければならないということです。 次の PHP スクリプトを実行すると、PHP に関する すべての 設定を取得することができます。
例1 phpinfo() のコール
<?php
phpinfo();
?>
あるいは、コマンドラインから次のように実行します。
drive:\\path\to\php\executable\php.exe -i
PHP の拡張モジュールを読み込む方法として最も一般的なのは、設定ファイル php.ini に書き込むことです。多くの拡張モジュールはすでに php.ini 上に存在し、 あとはセミコロンを取り除くだけで有効にできるようになっています。
;extension=php_extname.dll
extension=php_extname.dll
しかし、ウェブサーバーによっては少し迷うことがあるかもしれません。 というのも、php.ini が PHP 実行ファイルとは別の場所にあることもあるからです。 実際に使われている php.ini の場所を見つけるには、 phpinfo() で次のような行を探します。
Configuration File (php.ini) Path C:\WINDOWS
Loaded Configuration File C:\Program Files\PHP\5.2\php.ini
拡張モジュールを有効にしたら、php.ini を保存してウェブサーバーを再起動し、もういちど phpinfo() を確認します。 新しい拡張モジュールについての情報がそこに追加されているはずです。
もし拡張モジュールの情報が phpinfo() に出てこなかった場合は、ログをチェックして何が起こったのかを調べなければなりません。
PHP をコマンドライン (CLI) で使用している場合は、 拡張モジュールの読み込み時のエラーは直接画面に表示されます。
PHP をウェブサーバー上で使用している場合は、ログの場所や書式はソフトウェアによって異なります。 ウェブサーバーのドキュメントを読んでログを見つけましょう。 ログの場所については、PHP 自体とは特に関係のないことです。
DLL の場所がおかしい、php.ini の "extension_dir" がおかしい、 コンパイル時の設定が違うなどが、よくある問題です。
コンパイル時の設定が違うことが原因だった場合は、おそらく間違った DLL をダウンロードしてしまったのでしょう。 もういちど、正しい設定の拡張モジュールをダウンロードしましょう。 正しい設定とは? 改めて言います。phpinfo() を参考にしましょう。