テックブログ

PHP

復活の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選択の参考になれば幸いです。

ここまで読んでいただきありがとうございました。

この記事をシェアする

  • facebook
  • twitter
  • hatena
  • line
URLとタイトルをコピーする

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください