Ubuntu+Apache+php fpm環境でPHP7→8のアップデートが簡単すぎた(オタク小話45)
先日、本サービスが稼働しているサーバのPHP環境を7.4から8.0に更新するステップが簡単すぎたのでご紹介します。8.1でも操作は同じ。
オタク小話では気になる旬の話題やアニメ・ゲームなどのディープな話題を弊サイトの運営代表/編集責任者、市井がお届けする週刊連載です!バックナンバーはこちら
PHPの7→8アップデート
更新前の稼働環境
本サービス並びに筆者の開発している一部のプロジェクトはPHP・MySQLなどが動作させて提供しています。
- Ubuntu 20.04 LTS
- PHP 7.4系(apt経由でインストール)
- Apache 2.4系
- Apache上でPHP FPM経由でPHP処理を実行(高負荷対策の為)
なぜ7.4を脱しようとしたのかについてなのですが、2022年1月(今月)にPHPの超有名フレームワークLaravelのLTSバージョン9がリリースされ、PHPの最低要件が8だったからです。LTSバージョンなので早速導入しようかなとドキュメントを見て事前に用意しようかなと思ったら依存元のSymfonyの影響もあって8.0以降が必須だとか。
apt経由で更新
まずは以下のコマンドをBashなりに打って下さい。
sudo add-apt-repository ppa:ondrej/php
最新のパッケージ等をaptのオフィシャルリポジトリ外か参照できる仕組みPPAを使ってパッケージを参照しました。
あとはもうphp8.0をインストールするだけです。だいたいインストールまではあっけなく終わるんですけどねぇ~(笑)
sudo apt -y install php8.0
インストールが終わると、もうPHP7.x系からPHP8.0に切り替わっているはずです。試しに バージョンを確認してみて下さい。
php -v PHP 8.0.14 (cli) (built: Dec 20 2021 21:22:57) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.14, Copyright (c) Zend Technologies with Zend OPcache v8.0.14, Copyright (c), by Zend Technologies
関連パッケージの更新
php8.0-commonがインストールされただけでは不十分で、拡張も一緒に更新しましょう。だいたい以下のものを入れると大丈夫な人が多いと思います。
sudo apt -y install php8.0-curl php8.0-gd php8.0-mbstring php8.0-mcrypt php8.0-mysql php8.0-xml php8.0-zip php8.0-imagick
特に、Wordpressを使っている方はサイトヘルスというバックエンドシステムがちゃんと設定できているか等を確認できるツールがありますので、そちらを見るとWordPressを動作する上で不足しているPHPエクステンションをチェックすることが可能です。
Apache連携してるPHP-FPMを更新
FastCGI系のSAPI、PHP-FPMをApacheと連携している場合はphp-fpmも更新しましょう。ココが個人的に難関だと思っていたのですが、簡単すぎて腰抜けた。
まずはapt経由でインストールするのですが、インストールが完了した時に「apacheを使っているようだね。じゃぁ以下のコマンドを順に打ったら適用されるよ」的な事が書いてありました。
sudo apt -y php8.0-fpm # 以下コマンドを順に打っていく a2enmod proxy_fcgi setenvif a2enconf php8.0-fpm
これでsystemctl restart apache2なりでサーバを再起動すると反映されているはずです。再起動時にエラーが出たらご愁傷様です。phpinfo(); で確認しますと、ちゃんとPHP-FPMで動作していて、バージョンも8.0になっている事が分かります!以上!