この記事では、Apache2.4とPHPを連携して、
PHPファイルをApacheが扱えるようにする方法を紹介します。
この記事では、PHPに同梱のPHPモジュールを使用します。
(Windows11環境がないので、Windows10の環境です)
この記事はPHPファイルをApache2.4で使いたかったので、同時にQiita記事を書いたものです。
一部間違いがある可能性があるので、心配な場合は別の記事も見てみることをお勧めします。
注意点
この記事では、Apache2.4とPHPがインストール済みなことを前提としています。
Apacheのインストール方法は以下の記事で紹介しています。
この記事ではPHPがC:\php
にあり、ApacheがC:\Apache24
にあることを前提として進めます。
連携
PHP.iniを作成(既にできている人は飛ばしてください)
まず、PHP.iniが必要です。
同梱されているphp.ini-development
かphp.ini-production
をphp.ini
という名前にします。
変更するのが怖い場合は、複製して、複製したものをphp.ini
にするのでもOKです。
php.ini-development
は開発向けで、php.ini-production
は本番環境向けです。
僕は趣味でプログラミングをするために使うので、php.ini-development
を名称変更しました。
Apache側の設定ファイルを変更
設定ファイルを変更します。C:\Apache24\conf\httpd.conf
を開きましょう。
Dynamic Shared Object (DSO) Support
と書いてある行を探してください。
その行の近くにLoadModule モジュール名 パス
というような感じに書いてあるはずです。
LoadModuleとは
LoadModule モジュール名 パス
という感じの書き方で、
モジュール(拡張機能のようなもの)を読み込んでいます。
#
でコメントアウトしているものもあります。
コメントアウトされたLoadModuleは機能しません。
使いたいときに#
を消せば有効化できます。
PHPのLoadModuleが見つからない
LoadModuleが書いてあるのは、Apacheに同梱しているモジュールのみです。
PHPのモジュールはApacheに同梱されていないので、自分で書く必要があります。
書いてみよう
php7の場合は、以下のコードをhttpd.confの末尾に追加します。
LoadModule php7_module "c:/php/php7apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "C:/php"
php8の場合は、以下のコードをhttpd.confの末尾に追加します。
LoadModule php_module "c:/php/php8apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "C:/php"
さらに、htmlファイルではなくphpファイルを読み込むように変更します。
<IfModule dir_module>
- DirectoryIndex index.html
+ DirectoryIndex index.php
</IfModule>
PHP側の設定ファイルを変更
このまま起動するとエラーが出るので、
PHP.iniファイルを開き、以下の変更をしてください。
; Directory in which the loadable extensions (modules) reside.
; https://php.net/extension-dir
;extension_dir = "./"
; On windows:
- ;extension_dir = "ext"
+ extension_dir = "ext"
起動確認
index.phpをC:\Apache24\htdocs
に作成し、起動してみましょう。
httpd -k stop
念のため終了してから...
httpd -k start
起動して...
この状態で http://localhost/ にアクセスすると...
出ました!!!