😎

Windows11にApache+PHP8.3を導入する

2024/04/14に公開

普段はポータブル版のXAMPPを使用してWindows上にApache+PHP8.xの環境を構築していました。今回はXAMPPが現時点でまだPHP8.3に対応していなかったため、Apache, PHP8.3を手動導入してみました。
ありきたりな構成なので5秒で構築できると思ったら数時間かかってしまったのでつまづきポイントを省みる意味も込めての作業メモです。

Apache導入

https://www.apachelounge.com/download/
最新版(Apache 2.4.59-240404 Win64)をダウンロード、解凍して C:\Apache24 に設置します。

CLIから C:\Apache24\bin\httpd.exe を起動し、 http://localhost にアクセスして疎通確認します。

必要があればモジュールを有効にします。

- ;LoadModule rewrite_module modules/mod_rewrite.so
+ LoadModule rewrite_module modules/mod_rewrite.so

PHP8.3導入

https://windows.php.net/download#php-8.3
Visual Studioランタイムが未導入であればインストールします。(導入済みだったので省略)
最新のスレッドセーフ版(VS16 x64 Thread Safe (2024-Apr-10 15:13:46))をダウンロード、解凍して C:\php83 に設置します。

パスを C:\php83 に通し、CLIから利用できるようにします。

php.ini-developmentphp.ini にリネームします。必要な拡張が分かっていればこの時点で有効化してもOKです。

php.ini
- ;extension=curl
+ extension=curl

正しく構成管理されたcomposerプロジェクトであれば composer check-platform-reqs で依存状況が確認できます。

依存確認例
composer check-platform-reqs
Checking platform requirements for packages in the vendor dir
composer-plugin-api  2.6.0      success
composer-runtime-api 2.2.2      success
ext-ctype            *          success provided by symfony/polyfill-ctype
ext-curl             8.3.6      success
...

Apache-PHP連携

デフォルトのApacheは静的HTML向けの設定となっているのでphpを利用できるように設定します。
ServerName は未指定でも警告が出るだけで動作はします。localhostでしか使わないなら適当な設定値でOKです。

httpd.conf
- ServerName 
+ ServerName www.example.com:80

+ PHPIniDir "c:/php83"
+ LoadModule php_module c:/php83/php8apache2_4.dll
+ AddType application/x-httpd-php .php

- DirectoryIndex index.html
+ DirectoryIndex index.php index.html
php.ini
- ;extension_dir = "ext"
+ extension_dir = "C:\php83\ext"

CLIからの利用する場合は相対パス("ext")で拡張を読み込んでくれますが、Apache経由での処理は絶対パスでないと読み込まれないようです。
XAMPPでも毎回設定変え忘れて1時間ぐらいロスしています。ぴえん。

https://stackoverflow.com/questions/52803675/apache-isnt-loading-php-extensions

PHP公式にも絶対パス推奨と書かれています。
https://www.php.net/manual/ja/ini.core.php#ini.extension-dir

Apacheをサービス登録する

PC起動時に自動実行するようにサービス登録します。
https://httpd.apache.org/docs/2.4/platform/Windows.html#winsvc

コマンドプロンプトは管理者権限で実行する必要があります。

cd c:\Apache24\bin
httpd.exe -k install

Apacheの再起動

タスクマネージャー>サービス>Apache2.4 を選択して再起動でできます。

Discussion