Apacheとの関連付け

モジュール版

PHPをモジュール版として使用するには、Apacheの設定ファイルに次のような記述を追加します。

LoadModule php5_module "C:/PHP/php5apache2_2.dll"
AddType application/x-httpd-php .php
PHPIniDir "C:/PHP"

これについて順に解説します。

PHPモジュールの組み込み

LoadModule php5_module "C:/PHP/php5apache2_2.dll"

PHPのインストール フォルダにある「php5apache2_2.dll」を読み込むように指定します。これはApache 2.2用で、Apache 2.4ならば「php5apache2_4.dll」を指定します。Apache Additional downloads

非スレッドセーフ版のPHPには、「php5apache2_2.dll」は含まれていません。これはApache2はマルチスレッドのサーバであり、そのようなサーバはスレッドセーフ版のPHPを使用するものとされているからです。

これを正しく読み込めなかった場合には、「Cannot load C:/Apache2.2/php5apache2_2.dll into server: \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85\x81[\x83\x8b\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B」のようなエラーとなります。このとき「\x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85\x81[\x83\x8b\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B」の部分は、デコードすると「指定されたモジュールが見つかりません。」という内容です。これは単純にモジュールのパスの指定を誤っていたり、ApacheとPHPで32ビットと64ビットのように異なるバージョンを使っている場合に発生します。 php - cannot load php5apache2_2.dll - Stack Overflow プロセスの相互運用性 (Windows) | MSDN

または「Can't locate API module structure `php8_module' in file C:/php/php8apache2_4.dll: No error」となるときには、モジュールの名前を"php_module"とします。PHP 8ではバージョン番号が付かない形式に変更されています。php - httpd.conf on Windows: can't locate API model structure `php8_module` - Stack Overflow

MIMEタイプの追加

AddType application/x-httpd-php .php

PHPファイルの拡張子.phpを、MIMEタイプ「application/x-httpd-php」にマップします。

設定ファイルのディレクトリの指定

設定ファイルに以下のように追記します。

PHPIniDir "C:/PHP"

FastCGI版

 

トラブル対処法

サーバの起動時に、

PHP Warning:  PHP Startup: ***: Unable to initialize module
Module compiled with module API=********
PHP    compiled with module API=********

ようにモジュールの初期化に失敗するようならば、PHPのバージョンに適合するようにApacheを更新します。Apacheを再起動しても警告が記録されるようならば、OSを再起動します。

PHPのマニュアルから検索