【AWS】Amazon Linux 2でApacheがPHP7.4を実行出来ない

Amazon Linux 2(EC2)でApacheがPHP7.4を実行出来ない

AWSで「Amazon Linux 2」を選択して作成したEC2インスタンスにインストールしたPHP7.4が
Apacheで実行出来ない事象が起きたので解決策をPHP7.4のインストールからメモ。

事象: ページにPHPのソースコードが画面に表示されてしまう or 何も表示されない。

環境: AWS EC2 Amazon Linux 2 AMI (HVM), SSD Volume Type、 Apache/2.4.41、PHP 7.4.3

【原因】: Apacheが利用するPHPモジュールが存在しない。


EC2インスタンスへPHP7.4をインストールした際に本来同時にインストールされるはずの
Apacheが利用するPHP7.4用モジュール「libphp74.so」がインストールされていなかった事が原因でした。

【解決】: PHP7.4インストール時のパッケージ名指定方法に注意

PHP7.4インストールの際のパッケージ名の指定の仕方によって
Apacheに必要なPHPモジュールファイルが同時に入手出来ないケースがありましたので
モジュールを正しく追加させるためのインストール手順をまとめていきます。

PHP7.4インストール(Amazon Linux 2)手順まとめ

(本記事時点)PHPをそのままyumインストールした場合、
旧バージョンのPHP5系がインストールされます。

epelリポジトリを有効にする

Amazon Linux 2でepelリポジトリを有効にするために下記のコマンドを順番に実行する。
(後述するremiリポジトリに必要です)

PHPインストールパッケージの追加

インストールパッケージに必要な「remiリポジトリ」を追加するために以下のコマンドを実行。

※remiリポジトリ公式ドキュメントより、
「Maintained Enterprise Linux (RHEL / CentOS / Other clones)」を参照

/etc/yum.repos.d/配下にPHP7系のインストールに必要なパッケージが入手出来ている事を確認する

バージョン7.4を指定してインストール

目的のバージョンに該当するパッケージ名を指定します。
(7.n系 → php7nとする)

OK(モジュール同時入手可)

1. バージョンを表す数字の後に-phpを付けて実行する

2. 他のPHPライブラリも追加でインストールする
(日本語、画像、MySQL連携を有効にするライブラリ)

NG

以下の場合だとPHP本体はインストールされますが、モジュールファイルがインストールされません。

モジュールのインストール確認

上記、OKの方のコマンドでPHPのインストールが完了したら
Apache用のモジュールもインストールされているかを確認する。

モジュールファイル/etc/httpd/modules/libphp74.soが存在していればOK!

phpコマンドのエイリアスを作成

「php74」から「php」でコマンドを実行出来る様になります。

バージョン確認

PHPを一度アンインストールしたい場合

(以下のコマンドで、PHPと関連パッケージをアンインストール出来ます)

Apacheの再起動と設定確認

1. Apacheをあらかじめインストールしていた場合は、PHPを連携させるために再起動を行います。

2. PHPモジュールの組込を確認する方法

Apacheの設定ファイル /etc/httpd/conf/httpd.conf が読み込んでいる、
/etc/httpd/conf.modules.d/配下PHP用のモジュール設定ファイルを確認する。

libphp74.soがモジュールとして組み込まれている事が確認出来る

ページへアクセスしてPHPが実行されていればOKです!

Follow me!