
復活のmod_php
こんにちは MSP事業部の AM です。
昨今、情報漏えいなどのニュースが目立つようになり、脆弱対応のため、ソフトウェアバージョンアップ、最新OSやクラウドへの移行、それに伴った動作検証などに日々追われていると思います。
弊社でもかなりの数を対応しておりますが、その中でもWebサイトの言語としてよく使われるPHPですが、公式のライフサイクルはかなり早いです・・・
古いバージョンはインストールが複雑かつ古いものを使うと結局脆弱性があるので新しくせねばならず、コンテンツが思うように動作しなかったときに 『何が原因で動かないのか』 とかなり苦戦するかと思います。
非推奨になった mod_PHP
PHP はバージョン以外に mod_php が非推奨となり、RHEL9系のOS では公式でのインストールが不可となりました。
https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/8/html/8.7_release_notes/deprecated-functionality_dynamic-programming-languages-web-and-database-servers
こちらもしばしば 動作に影響を及ぼします。
Amazon Linux2023 で利用できるようになっている
そんな状況の中、Amazon Linux2023 で提供されている PHP で実は mod_php が提供されていました。
https://docs.aws.amazon.com/ja_jp/linux/al2023/release-notes/relnotes-2023.7.20250331.html
※2025/05/26 時点
# dnf list php*modphp
Last metadata expiration check: 0:09:38 ago on Mon May 26 01:34:11 2025.
Available Packages
php8.3-modphp.x86_64 8.3.20-1.amzn2023.0.1 amazonlinux
php8.4-modphp.x86_64 8.4.6-1.amzn2023.0.1 amazonlinux
確かに存在するようです。
PHP は 8.1 から 8.4 までインストールできますが、modphp が提供されているのは 8.3、8.4 のみのようです。
# dnf list php*cli
Last metadata expiration check: 0:10:29 ago on Mon May 26 01:34:11 2025.
Available Packages
php8.1-cli.x86_64 8.1.32-1.amzn2023.0.1 amazonlinux
php8.2-cli.x86_64 8.2.28-1.amzn2023.0.1 amazonlinux
php8.3-cli.x86_64 8.3.20-1.amzn2023.0.1 amazonlinux
php8.4-cli.x86_64 8.4.6-1.amzn2023.0.1 amazonlinux
試しにインストールして mod_php が認識できるのか確認したいと思います。
# dnf install mod_php
現在 httpd の MPM は event になっています。
# httpd -V
Server version: Apache/2.4.62 (Amazon Linux)
Server built: Jul 23 2024 00:00:00
Server's Module Magic Number: 20120211:134
Server loaded: APR 1.7.5, APR-UTIL 1.6.3, PCRE 10.40 2022-04-14
Compiled using: APR 1.7.2, APR-UTIL 1.6.3, PCRE 10.40 2022-04-14
Architecture: 64-bit
Server MPM: event
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_PROC_PTHREAD_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
現状読み込んでいないことを確認します。
# httpd -M |grep php
#
※なにも表示されないことを確認
prefork に切り替えます。
# cp -ip /etc/httpd/conf.modules.d/00-mpm.conf /etc/httpd/conf.modules.d/00-mpm.conf.back
# vim /etc/httpd/conf.modules.d/00-mpm.conf
# diff /etc/httpd/conf.modules.d/00-mpm.conf.back /etc/httpd/conf.modules.d/00-mpm.conf
11c11
< #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
---
> LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
23c23
< LoadModule mpm_event_module modules/mod_mpm_event.so
---
> #LoadModule mpm_event_module modules/mod_mpm_event.so
# httpd -t
Syntax OK
# httpd -M |grep php
php_module (shared)
# systemctl restart httpd
読み込んだことを確認して apacheを再起動します。
phpinfo を配置します。
# vim /var/www/html/phpinfonetassist.php
<?php
phpinfo();
?>
配置したらサイトにアクセスして php の ServerAPI を確認します。
http://TEST-SITE/phpinfonetassist.php

Apache2 Handler であることを確認できました。
Amazon 側がいつまで提供してくれているか、判断はできませんが
mod_php での動作を希望する場合は、 Amazon Linux 2023 は選択肢の一つとしてありになります。
OSのリプレイスやセキュリティ対応に伴うコンテンツの修正、確認はたいへんですが、OS選択の参考になれば幸いです。
ここまで読んでいただきありがとうございました。