AWSのEC2(AmazonLinux2)でWordPressをホストしているときにPHPのバージョンアップを行いました。少し癖があったので手順を記します。
既存のPHPを削除して新しいバージョンのPHPをインストールしただけではサイトに重大なエラーがありましたとなってしまいブログにアクセスできなくなったのでその回避策となります。
作業ミス時のバックアップのためにEBSのスナップショットを作成しておくことをお勧めします。
EC2でWordPressをホストすると簡単にバックアップ、切り戻しができるので非常におすすめです。容量追加、マシンパワーアップも数クリックで実現可能!当ブログもEC2でホストしています。
現在のPHPを削除する
EC2インスタンスにSSH接続して以降の手順を進めます。セッションマネージャーなどでもOKですが、筆者はTeraTermを使いました。
現在のPHPバージョン確認
現在インストールされているPHPのバージョンを確認しましょう。
yum list installed | grep php
実行結果で7.3など古いバージョンが表示されればアップデートに進みます。
php.x86_64 7.3.33-2.amzn2 @amzn2extra-php7.3
現在入っているPHP削除
コマンドを実行してPHPと関連コンポーネントを削除します。
sudo yum remove php php-*
コマンド実行時質問されたらyを入力します。
Installed size: 47 M
Is this ok [y/N]:
最新バージョンのPHPをインストールする
引き続きSSH接続で進めます。
yumの最新化
yumの最新化を行っていきます。既に最新の場合は不要です。
sudo yum update
途中質問されたらyで進めます。
Amazon Linux Extrasが入っているかの確認
Amazon Linux Extrasでリポジトリの切り替えを行う必要があります。そのためにAmazon Linux Extrasがインストールされているかの確認を行います。
which amazon-linux-extras
上記コマンドを実行してパスが表示されればwhich amazon-linux-extrasがインストールされています。表示されない場合はコマンドを実行してインスタンスしましょう。
sudo yum install amazon-linux-extras
AmazonLinuxで有効になっているリポジトリの確認
AmazonLinuxが参照しているリポジトリを確認します。
amazon-linux-extras | grep "php"
デフォルトではおそらく7.3など古いバージョンになっていることと思います。
31 *php7.3=latest enabled \
_ php7.4 available [ =stable ]
_ php8.0 available [ =stable ]
_ php8.1 available [ =stable ]
enableとなっているリポジトリが現在有効になっています。新しいバージョンのphpをインストールするにはこのリポジトリを変更する必要があります。
AmazonLinuxで有効になっているリポジトリの変更
コマンドを実行し、まずはphp7.3のリポジトリを無効にします。
sudo amazon-linux-extras disable "php7.3"
php7.3が無効になります。
42 php7.4 available [ =stable ]
51 php8.0 available [ =stable ]
66 php8.1 available [ =stable ]
では現時点の最新バージョンphp8.1を有効化します。
sudo amazon-linux-extras enable "php8.1"
php8.1が有効になりました。コマンドを実行すると実行結果にコマンドが表示されます。
66 php8.1=latest enabled [ =stable ]
67 awscli1 available [ =stable ]
Now you can install:
# yum clean metadata
# yum install php-cli php-pdo php-fpm php-json php-mysqlnd
表示されたコマンドを実行
表示されたコマンドを実行します。このままでは権限でエラーになるのでsudoを付けます。
sudo yum clean metadata
sudo yum install php-cli php-pdo php-fpm php-json php-mysqlnd
質問されたらyで進めます。php8.1がインストールされます。
Installed:
php-cli.x86_64 0:8.1.12-1.amzn2 php-common.x86_64 0:8.1.12-1.amzn2
php-fpm.x86_64 0:8.1.12-1.amzn2 php-mysqlnd.x86_64 0:8.1.12-1.amzn2
php-pdo.x86_64 0:8.1.12-1.amzn2
Complete!
インストールされたPHPバージョン確認
最後にphpのバージョン確認コマンドを実行してphp8.1になっていればOKです。
php -v
php8.1になっています。
PHP 8.1.12 (cli) (built: Oct 31 2022 22:06:27) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.12, Copyright (c) Zend Technologies
WordPressに必要なコンポーネントのインストール
このままではWordPressが使えない
phpのバージョンを上げました。反映するにはhttpdを再起動する必要があります。しかしここまでで再起動してしまうと
このサイトで重大なエラーが発生しましたというエラーになってしまいます。
これは必要なコンポーネントが不足しているためです。次の章で必要なコンポーネントをインストールしていきます。
WordPressで必要なコンポーネントのインストール
以下のコマンドで必要なコンポーネントをインストールします。
sudo yum install -y php-xml
sudo yum install -y php-mbstring
sudo yum install -y php-gd
インストールが完了したらコマンドを実行してhttpdを再起動します。
sudo systemctl restart httpd
まだ重大なエラーになってしまう場合はEC2インスタンスを再起動すると解消されるかと思います。
PR
当ブログはWordPressテーマSWELLを使用しています。非常に使いやすく、簡単にプロのようなデザインを使えるのでお勧めです!!
SWELL – シンプル美と機能性両立を両立させた、圧巻のWordPressテーマ
システムエンジニア
AWSを中心としたクラウド案件に携わっています。
IoTシステムのバックエンド開発、Datadogを用いた監視開発など経験があります。
IT資格マニアでいろいろ取得しています。
AWS認定:SAP, DOP, SAA, DVA, SOA, CLF
Azure認定:AZ-104, AZ-300
ITIL Foundation
Oracle Master Bronze (DBA)
Oracle Master Silver (SQL)
Oracle Java Silver SE
■略歴
理系の大学院を卒業
IT企業に就職
AWSのシステム導入のプロジェクトを担当