PHPを7.3から7.4に更新する
先日、PHPの7.3のサポートが終了したため、PHP7.4に更新することにした。PHP7.4も今年の11月にはセキュリティアップデートが終了になってしまうのだが、いきなり8.0系にするとWordPressへの影響などがちょっと気になったので、今回はひとまず7.4にしておく。またPHPを更新することもあると思うので、更新の手順をメモしておく。
※以下の手順を参考にしてアップデートして不具合が発生しても私は責任を持てませんので、参考にする場合は自己責任でお願いしますm(_ _)m
環境
CentOS 7(さくらのVPSで契約しているサーバーにインストールしている)
更新の手順
以前PHP7.1から7.3に更新したときと同じく、remiレポジトリを使ってインストールする。サーバーにターミナルからログインし、suコマンドでrootになって作業を進める。
まず、以下のコマンドで現在インストールされているremiレポジトリのphp packageのversionを確認する。
# yum list installed php*
以下のようにPHP7.3のpackageがインストールされている。
php.x86_64 7.3.19-1.el7.remi @remi-php73 php-cli.x86_64 7.3.19-1.el7.remi @remi-php73 php-common.x86_64 7.3.19-1.el7.remi @remi-php73 php-devel.x86_64 7.3.19-1.el7.remi @remi-php73 php-gd.x86_64 7.3.19-1.el7.remi @remi-php73 php-json.x86_64 7.3.19-1.el7.remi @remi-php73 php-mbstring.x86_64 7.3.19-1.el7.remi @remi-php73 php-mysqlnd.x86_64 7.3.19-1.el7.remi @remi-php73 php-pdo.x86_64 7.3.19-1.el7.remi @remi-php73
次に、以下のコマンドで現在使っているモジュールを確認する。PHP7.4にアップデートした後に差分が確認できるように、この結果はどこかにtxtファイルなどで保存しておくなりコピペするなりしておく。
# php -m
php.iniの設定をいじっている場合は、更新後に差分を確認できるようにバックアップをとっておく。
# cp /etc/php.ini /etc/php-old.ini
心配だったら/var/www/htmlを圧縮してバックアップを取っておいても良いが、今回の作業では特にリスクはないと判断して割愛。
ここまで来たら、PHP7.3を以下のコマンドでアンインストールする。削除を実行する前に意図していないファイルが無いかよく確認すること。私は使っていないが、phpMyAdminを使っている人は以下のコマンドだと消えてしまうので注意。
# yum remove php*
削除が完了したらPHP7.4をインストールするが、そのまえにepel-releaseのアップデートを確認しておく。
# yum update epel-release
以下でremiのレポジトリを確認し、remi-php74.repoがあるか確認する。
# ll /etc/yum.repos.d/ | grep remi-
無い場合は、以下でレポジトリをインストールする。
# yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
あとは必要なモジュールを指定してインストールする。epelレポジトリも許可しておかないと依存関係でうまくいかないことがあるようなので、epelも許可しておく。
# yum install --enablerepo=epel,remi,remi-safe,remi-php74 php php-mbstring php-mysqlnd php-pdo php-gd php-devel
※ちなみに私はこのとき一番大事なphpを指定し忘れ、VPSにインストールしているWordPressでつくったブログにアクセスしたら「Testing 123…」というApacheのテストページの表示になってしまってとても焦った。ミスが初歩的過ぎて中々気づかず、原因がわかるまで1時間程度ブログをダウンさせてしまった…泣
完了したら以下のコマンドでPHPのバージョンを確認し、PHPが7.4になっていることを確認する。
# php -v
問題なくインストールできていれば、以下のようにPHP 7.4が表示される。
PHP 7.4.27 (cli) (built: Dec 14 2021 17:17:06) ( NTS )
私はapacheを使っているので、最後に以下でWebサーバーをリスタートする。
# systemctl restart httpd
phpのモジュールを指定し忘れるミスはあったが、そのほかは特に問題なくインストールできた。あとはバックアップを取ったphp-old.iniの内容を、必要に応じてphp.iniに反映させればOK。
もしWordPressなどで更新後にプラグインがうまく動かなくなった場合は、
# yum list installed php*
を実行してみて、更新前と比べて入れ忘れているpackageが無いか調べると何かわかるかも。
参考文献
CentOS 7 で remi リポジトリを用いた PHP 7.2 から 7.4 へのアップデート / Twin Turbo Computing
PHPを7.3から7.4にアップグレードする手順(CentOS 7)