PHP7.4のインストール(Amazon Linux2(ec2),CentOS7)、WordPressの環境構築

WordPressの環境構築の第2回で、PHP7.4のインストールについて説明しています。

目的と動作環境

最終更新日:2022/8/1

WordPress(ワードプレス)の環境構築の手順について説明していきます。前回はWordPressの環境構築の第1回として、EPELリポジトリの設定やApache2.4のインストールをしました。
WordPress環境構築の第1回、Apache2.4をインストール(Amazon Linux2(ec2),CentOS7)

今回はWordPress環境構築の第2回で、PHP7.4のインストールについて説明していきます。

Amazon Linux2やCentOS7環境で、yumでいきなりPHPをインストールしようとすると古いバージョンのPHPをインストールしてしまうので、WordPressの環境構築とか関係なく、PHP7のインストールをしたい方も参考にしてみてください。

■環境やインストールするバージョン情報です。
WordPress:6.0(2022/5/24時点の最新バージョン)、5.8(2021/11/3時点の最新バージョン)
->バージョンは6.0、5.8の2つで試しています。
ウェブサーバ:Apache2.4
PHP:7.4
MariaDB:10.5、10.6

試したOS環境は、ec2のAmazon Linux 2(64ビット(x86))とCentOS7.9の2つです。
・ec2

$ cat /etc/system-release
Amazon Linux release 2 (Karoo)
・CentOS7
$ cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

PHP7.4のインストール(ec2環境(Amazon Linux 2))

ec2(Amazon Linux2)環境でPHP7.4のインストールをしていきます。CentOS7環境の場合は、こちらの方を参考にしてください。

Amazon Linux2でPHP7.4をインストールする場合、amazon-linux-extraコマンドを使うと簡単にできます。
ちなみにamazon-linux-extraでインストールできるPHPのバージョンです。

$ amazon-linux-extras | grep php
 15  php7.2                   available    \
 17  lamp-mariadb10.2-php7.2  available    \
 31  php7.3                   available    \
 42  php7.4                   available    [ =stable ]
 51  php8.0                   available    [ =stable ]
amazon-linux-extraでPHP7.4の情報を見るとこんな感じです。これらのパッケージ(モジュール)がインストールされます。
(*WordPressでは、DBとしてMariaDBかMySQLを使用するので、php-mysqlndが必要になってきます。)
$ amazon-linux-extras info php7.4
php7.4 recommends php-cli                    # yum install php-cli
php7.4 recommends php-pdo                    # yum install php-pdo
php7.4 recommends php-fpm                    # yum install php-fpm
php7.4 recommends php-json                   # yum install php-json
php7.4 recommends php-mysqlnd                # yum install php-mysqlnd

それでは、PHP7.4をインストールします。

$ sudo amazon-linux-extras install php7.4
Installing php-pdo, php-fpm, php-mysqlnd, php-cli, php-json
〜
================================================================================================================
 Package                 アーキテクチャー     バージョン                   リポジトリー                    容量
================================================================================================================
インストール中:
 php-cli                 x86_64               7.4.21-1.amzn2               amzn2extra-php7.4              4.9 M
 php-fpm                 x86_64               7.4.21-1.amzn2               amzn2extra-php7.4              1.7 M
 php-json                x86_64               7.4.21-1.amzn2               amzn2extra-php7.4              71 k
 php-mysqlnd             x86_64               7.4.21-1.amzn2               amzn2extra-php7.4              241 k
 php-pdo                 x86_64               7.4.21-1.amzn2               amzn2extra-php7.4              134 k
依存性関連でのインストールをします:
 libzip                  x86_64               1.3.2-1.amzn2.0.1            amzn2-core                      62 k
 php-common              x86_64               7.4.21-1.amzn2               amzn2extra-php7.4              1.1 M

トランザクションの要約
===============================================================================================================
インストール  5 パッケージ (+2 個の依存関係のパッケージ)
〜
インストールできました!

バージョンを確認します。

$ php -v
PHP 7.4.21 (cli) (built: Jul  7 2021 17:35:08) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

また、PHP7.4をインストール後にyum repolistでリポジトリの一覧を確認したら、amzn2extra-php7.4リポジトリが有効状態で追加されていました(amazon-linux-extrasコマンドでPHP7.4をインストールする場合、Remiリポジトリではなくこのリポジトリを使うみたいですね)。

$ yum repolist
〜
リポジトリー ID                      リポジトリー名                                                      状態
!amzn2-core/2/x86_64                 Amazon Linux 2 core repository                                     26,556
amzn2extra-docker/2/x86_64           Amazon Extras repo for docker                                          50
amzn2extra-epel/2/x86_64             Amazon Extras repo for epel                                             1
amzn2extra-php7.4/2/x86_64           Amazon Extras repo for php7.4                                         329
epel/x86_64                          Extra Packages for Enterprise Linux 7 - x86_64                 13,460+228
repolist: 40,396

PHP自体はインストールできましたが、WordPressではphp-gdというグラフィック描画ライブラリを使用する時があるようなので、これも事前にインストールしておきます。

php-gdのインストールは、amazon-linux-extrasコマンドではなくyumを使います(amazon-linux-extrasでPHP7.4をインストールする前にphp-gdをインストールしようとすると、古いバージョンのphp-gdをインストールしようとするので注意です)。

$ sudo yum install php-gd
〜
インストール中          : php-gd-7.4.21-1.amzn2.x86_64                           1/1 
  検証中                : php-gd-7.4.21-1.amzn2.x86_64                           1/1 

インストール:
  php-gd.x86_64 0:7.4.21-1.amzn2

完了しました!
php-gdのバージョン7.4もインストールできました!

あと、php-mbstringとphp-xmlもインストールしておいた方が良いかもしれません。両方ともなくてもWordPressの環境構築はできますが、WordPress運用後にphp-mbstringが無いと新しいテーマをインストールした時に、「Fatal error: Uncaught Error: Call to undefined function mb_language() in 〜」というエラーが発生してサイト自体が表示できなくなる場合もあります。また、php-xmlが無いと人気テーマのCocoonの設定画面を開いた時に画面が表示されない問題が発生しました。

$ sudo yum install php-mbstring php-xml

インストールされたPHPのパッケージ一覧です。

$ yum list installed | grep -i php
php-cli.x86_64                        7.4.21-1.amzn2                 @amzn2extra-php7.4
php-common.x86_64                     7.4.21-1.amzn2                 @amzn2extra-php7.4
php-fpm.x86_64                        7.4.21-1.amzn2                 @amzn2extra-php7.4
php-gd.x86_64                         7.4.21-1.amzn2                 @amzn2extra-php7.4
php-json.x86_64                       7.4.21-1.amzn2                 @amzn2extra-php7.4
php-mysqlnd.x86_64                    7.4.21-1.amzn2                 @amzn2extra-php7.4
php-pdo.x86_64                        7.4.21-1.amzn2                 @amzn2extra-php7.4

PHP7.4のインストールができたら、次はApache上でPHPの動作確認をしてみます。

PHP7.4のインストール(CentOS7環境)

CentOS7環境で、PHP7.4をインストールしていきます。ec2(Amazon Linux2)環境の場合は、こちらの方を参考にしてください。

CentOS7環境でPHP7やPHP8をインストールする場合、Remiリポジトリを使います。
(*Remiリポジトリを使わずに、いきなりyumでPHPをインストールしようとすると、古いバージョンのPHPがインストールされてしまうので注意です。)

ですので、まずは下のコマンドを実行してRemiリポジトリを追加します。
(*このコマンドを実行すると、RemiだけじゃなくてEPELリポジトリも追加されます。けど既にEPELリポジトリを追加している環境でも、特に気にする必要はありません。)

$ sudo yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
〜
  インストール中          : remi-release-7.9-2.el7.remi.noarch           1/1 
  検証中                  : remi-release-7.9-2.el7.remi.noarch           1/1 

インストール:
  remi-release.noarch 0:7.9-2.el7.remi                                                                                                 

完了しました!

完了したので、再度リポジトリを確認してみます。

$ ls /etc/yum.repos.d/
CentOS-Base.repo       CentOS-Sources.repo        epel-testing.repo  remi-glpi93.repo   remi-php70.repo  remi-php74.repo  remi.repo
CentOS-CR.repo         CentOS-Vault.repo          epel.repo          remi-glpi94.repo   remi-php71.repo  remi-php80.repo
CentOS-Debuginfo.repo  CentOS-fasttrack.repo      remi-glpi91.repo   remi-modular.repo  remi-php72.repo  remi-php81.repo
CentOS-Media.repo      CentOS-x86_64-kernel.repo  remi-glpi92.repo   remi-php54.repo    remi-php73.repo  remi-safe.repo

$ yum repolist
〜
リポジトリー ID                  リポジトリー名                                                         状態
base/7/x86_64                    CentOS-7 - Base                                                        10,072
epel/x86_64                      Extra Packages for Enterprise Linux 7 - x86_64                         13,689
extras/7/x86_64                  CentOS-7 - Extras                                                         500
remi-safe                        Safe Remi's RPM repository for Enterprise Linux 7 - x86_64              4,641
updates/7/x86_64                 CentOS-7 - Updates                                                      2,936
repolist: 31,838

PHP7,8の色々なバージョンのRemiリポジトリが追加されました!

Remiリポジトリの準備ができたので、PHP7.4をインストールします。--enablerepoオプションでremi-php74を指定します。
あと、ここではphp-mysqlnd,php-gdも一緒にインストールします(WordPressはMariaDBと連携が必要ですし、php-gdというグラフィック描画ライブラリも使う時があるそうなので。)

$ sudo yum --enablerepo=remi-php74 install php php-mysqlnd php-gd
〜
インストール:
  php.x86_64 0:7.4.25-1.el7.remi           php-gd.x86_64 0:7.4.25-1.el7.remi           php-mysqlnd.x86_64 0:7.4.25-1.el7.remi          

依存性関連をインストールしました:
  dejavu-fonts-common.noarch 0:2.33-6.el7         dejavu-sans-fonts.noarch 0:2.33-6.el7     fontconfig.x86_64 0:2.13.0-4.3.el7       
  fontpackages-filesystem.noarch 0:1.44-8.el7     fribidi.x86_64 0:1.0.2-1.el7_7.1          gd-last.x86_64 0:2.3.3-2.el7.remi        
  graphite2.x86_64 0:1.3.10-1.el7_3               harfbuzz.x86_64 0:1.7.5-2.el7             jbigkit-libs.x86_64 0:2.0-11.el7         
  libX11.x86_64 0:1.6.7-4.el7_9                   libX11-common.noarch 0:1.6.7-4.el7_9      libXau.x86_64 0:1.0.8-2.1.el7            
  libXpm.x86_64 0:3.5.12-1.el7                    libjpeg-turbo.x86_64 0:1.2.90-8.el7       libraqm.x86_64 0:0.7.0-4.el7             
  libsodium.x86_64 0:1.0.18-1.el7                 libtiff.x86_64 0:4.0.3-35.el7             libwebp7.x86_64 0:1.0.3-1.el7.remi       
  libxcb.x86_64 0:1.13-1.el7                      php-cli.x86_64 0:7.4.25-1.el7.remi        php-common.x86_64 0:7.4.25-1.el7.remi    
  php-json.x86_64 0:7.4.25-1.el7.remi             php-pdo.x86_64 0:7.4.25-1.el7.remi        php-sodium.x86_64 0:7.4.25-1.el7.remi    

完了しました!
インストールできました!

あと、php-mbstringとphp-xmlもインストールしておいた方が良いかもしれません。両方ともなくてもWordPressの環境構築はできますが、WordPress運用後にphp-mbstringが無いと新しいテーマをインストールした時に、「Fatal error: Uncaught Error: Call to undefined function mb_language() in 〜」というエラーが発生してサイト自体が表示できなくなる場合もあります。また、php-xmlが無いと人気テーマのCocoonの設定画面を開いた時に画面が表示されない問題が発生しました。

$ sudo yum --enablerepo=remi-php74 install php-mbstring php-xml

これらのエラーについては別ページでも書いています。
WordPressでテーマを導入時、「アップロードされたファイルがphp.iniのupload_max_filesizeディレクティブを越えています」「辿ったリンクは期限が切れています」「このサイトで重大なエラーが発生しました」エラーが出た
Cocoon設定の各設定タブを押しても表示されない問題と解決方法

バージョンを確認してみます。

$ php -v
PHP 7.4.25 (cli) (built: Oct 19 2021 15:18:10) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
PHP7.4がインストールされています。バージョン7.4.xのxは、環境によって違うと思います。

インストールされたPHPのパッケージ一覧です。

$ yum list installed | grep -i php
php.x86_64                           7.4.25-1.el7.remi              @remi-php74 
php-cli.x86_64                       7.4.25-1.el7.remi              @remi-php74 
php-common.x86_64                    7.4.25-1.el7.remi              @remi-php74 
php-gd.x86_64                        7.4.25-1.el7.remi              @remi-php74 
php-json.x86_64                      7.4.25-1.el7.remi              @remi-php74 
php-mysqlnd.x86_64                   7.4.25-1.el7.remi              @remi-php74 
php-pdo.x86_64                       7.4.25-1.el7.remi              @remi-php74 
php-sodium.x86_64                    7.4.25-1.el7.remi              @remi-php74 

Apache上でPHPの動作確認をする

PHP7.4をインストールしたので、Apache上でPHPが動作する事を確認しておきます。ここは、ec2(Amazon Linux2)、CentOS7どちらの環境も同じです

まず、php.iniファイルのtimezone設定を日本時刻に設定しておきます。
テキストエディタはなんでも良いですが、vimかviで/etc/php.iniファイルを編集しましょう。

$ sudo vim /etc/php.ini  
date.timezoneのコメントアウトを外して、Asia/Tokyoに設定します。
・編集前
;date.timezone =
・編集後
date.timezone = Asia/Tokyo

編集したら、Apacheを再起動します。

$ sudo systemctl restart httpd

次に、/var/www/htmlディレクトリ直下に、PHPの動作確認のために適当なphpファイルを作成します。
なんでも良いですが、とりあえず下のようなhoge.phpファイルを作成します。

$ cat /var/www/html/hoge.php
<?php
phpinfo();

ファイルを作成したら、ブラウザで「http://***.***.***.***/hoge.php」にアクセスしてみます(***.***.***.***はIPアドレスです)。
下のようなページが表示されれば、問題ありません。ちゃんとApache上でPHPが動作しています!
Apache上でPHPの動作確認をブラウザでする

[広告] Kindle Unlimitedなら対象の本が定額で読み放題
対象本には、プログラミングなどのIT関連本、マンガ、雑誌、ビジネス書などがたくさんあります!

次回、MariaDBのインストール

今回は、WordPressの環境構築の第2回としてPHP7.4のインストールについて説明してきました。

次回は、データベースのMariaDBのインストールについて説明します。
WordPress環境構築の第3回、MariaDB10.6(10.5)のインストール(Amazon Linux2(ec2),CentOS7