PHPを7.4にアップグレードした話

これはPHP7.4リリース直後の話です。

待ちに待ったPHP7.4正式版ようやくリリースしましたね。性能的にPHP7.3より良くなったらしいので、リリース直後にowner203の世界に入れちゃいましたが…

(2020/1/30追記)
WordPress 5.3.1、そしてNextcloud 18はPHP7.4に対応しました!下記のやり方でPHP7.4(追記時点で最新版は7.4.2)にアップグレードして、今度は問題なく使えました!やった!

アップグレード前の準備

PPA関連

現時点のUbuntu 19.10では、apt公式パッケージにPHP7.4は入っていないので、このPPAを手動で入れる必要があります。

sudo apt-add-repository ppa:ondrej/php

そしてパッケージを最新にしましょう。

sudo apt update
sudo apt upgrade

Apacheを停止

アップグレードする前に、Apacheを一旦停止します。

sudo systemctl stop apache2.service

これから本作業に入ります。

アップグレード実行

旧バージョンを削除

まず、今入っているPHP7.x関連のパッケージを調べます。

dpkg -l php7*

PHP7.4を入れる前に、PHP7.3を削除しちゃいましょう。

sudo rm /etc/php/7.3/apache2/php.ini.orig #手動で残したphp.iniのバックアップファイル,邪魔なので先に削除しておく
sudo rm /etc/php/7.3/cli/php.ini.orig #同上

sudo apt remove --purge php7.3 libapache2-mod-php7.3 php7.3-mysql php7.3-gd php7.3-json php7.3-curl php7.3-mbstring php7.3-intl php7.3-xml php7.3-xmlrpc php7.3-soap php7.3-zip php7.3-bz2
sudo apt remove --purge php-common php7.3-common php7.3-opcache php7.3-readline
sudo apt remove --purge php-imagick php-apcu #入れてるPHP関連パッケージを全部削除する

sudo apt autoremove  #依存パッケージを削除する

これでPHP関連のものは完璧に削除されるはずです。

新バージョンを導入

新バージョンのPHP7.4をインストールしましょう。

sudo apt install php7.4 libapache2-mod-php7.4 php7.4-mysql php7.4-gd php7.4-json php7.4-curl php7.4-mbstring php7.4-intl php7.4-xml php7.4-xmlrpc php7.4-soap php7.4-zip php7.4-bz2 php-imagick php-apcu

新しいPHP7.4の設定ファイルを必要に応じて編集しましょう。

sudo cp /etc/php/7.4/apache2/php.ini /etc/php/7.4/apache2/php.ini.orig
sudo vi /etc/php/7.4/apache2/php.ini
/etc/php/7.4/apache2/php.ini

memory_limit = 1G

post_max_size = 5G

upload_max_filesize = 5G
sudo cp /etc/php/7.4/cli/php.ini /etc/php/7.4/cli/php.ini.orig
sudo vi /etc/php/7.4/cli/php.ini
/etc/php/7.4/cli/php.ini

memory_limit = 1G

post_max_size = 5G

upload_max_filesize = 5G

[APCu]
apc.enable_cli = 1

これでPHP7.4は導入・設定完了です。

Apacheを起動

最後にApacheを再起動して終わりです。

sudo systemctl restart apache2.service

アップグレード後の確認

まずコマンドで確認します。

php -v

そこで返されたのはこれです。

Output

PHP 7.4.0 (cli) (built: Nov 28 2019 07:27:40) ( NTS )

大丈夫そうですね。念のためphpinfoを開いて見ると、こちらもちゃんと「PHP Version 7.4.0」になっていて問題なさそうなので、早速owner203の世界を開いてみると…

データベース接続確立エラー

あれ?

環境を詳しく調べていないが、たぶんWordPress 5.3.0、Nextcloud 17.0.0の本体かプラグインかアプリのどれかがまだPHP7.4対応していないかも(Nextcloud 17.0.0は確かに対応していなかった)?仕方なくいったんPHP7.3に戻ろうと (´;ω;`)