【AWS】Amazon Linux 2でApacheがPHP7.4を実行出来ない
Amazon Linux 2で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リポジトリに必要です)
$ sudo amazon-linux-extras enable epel
$ sudo yum clean metadata
$ sudo yum install epel-release
PHPインストールパッケージの追加
インストールパッケージに必要な「remiリポジトリ」を追加するために以下のコマンドを実行。
$ sudo yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
※remiリポジトリ公式ドキュメントより、
「Maintained Enterprise Linux (RHEL / CentOS / Other clones)」を参照
/etc/yum.repos.d/配下にPHP7系のインストールに必要なパッケージが入手出来ている事を確認する
$ ls /etc/yum.repos.d/ amzn2-core.repo epel-testing.repo remi-glpi91.repo remi-glpi93.repo remi-modular.repo remi-php70.repo remi-php72.repo remi-php74.repo remi.repo amzn2-extras.repo epel.repo remi-glpi92.repo remi-glpi94.repo remi-php54.repo remi-php71.repo remi-php73.repo remi-safe.repo
バージョン7.4を指定してインストール
目的のバージョンに該当するパッケージ名を指定します。
(7.n系 → php7nとする)
OK(モジュール同時入手可)
1. バージョンを表す数字の後に-phpを付けて実行する
$ sudo yum -y install php74-php
2. 他のPHPライブラリも追加でインストールする
(日本語、画像、MySQL連携を有効にするライブラリ)
$ sudo yum -y install php74-php-mbstring php74-php-gd php74-php-mysqlnd php74-php-pdo php74-php-pdo-dblib php74-php-pdo-firebird
NG
以下の場合だとPHP本体はインストールされますが、モジュールファイルがインストールされません。
(NG) $ sudo yum -y install php74 (-phpなし)
モジュールのインストール確認
上記、OKの方のコマンドでPHPのインストールが完了したら
Apache用のモジュールもインストールされているかを確認する。
$ ls /etc/httpd/modules/
モジュールファイル/etc/httpd/modules/libphp74.soが存在していればOK!
phpコマンドのエイリアスを作成
「php74」から「php」でコマンドを実行出来る様になります。
$ sudo ln /usr/bin/php74 /usr/bin/php
バージョン確認
$ php -v PHP 7.4.3 (cli) (built: Feb 18 2020 11:53:05) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies
PHPを一度アンインストールしたい場合
(以下のコマンドで、PHPと関連パッケージをアンインストール出来ます)
$ sudo yum remove php* -y
Apacheの再起動と設定確認
1. Apacheをあらかじめインストールしていた場合は、PHPを連携させるために再起動を行います。
$ sudo systemctl restart httpd
2. PHPモジュールの組込を確認する方法
Apacheの設定ファイル /etc/httpd/conf/httpd.conf が読み込んでいる、
/etc/httpd/conf.modules.d/配下PHP用のモジュール設定ファイルを確認する。
$ vi /etc/httpd/conf.modules.d/15-php74-php.conf
libphp74.soがモジュールとして組み込まれている事が確認出来る
<IfModule !mod_php5.c> <IfModule prefork.c> LoadModule php7_module modules/libphp74.so </IfModule> </IfModule>
ページへアクセスしてPHPが実行されていればOKです!