【CentOS7】yum update 後に Moodle が動かなくなった件

yum update しようとしたら、以下のようなエラーが発生しました。

エラー: パッケージ: php-gd-7.4.19-1.el7.remi.x86_64 (@remi-php74)
             要求: libgd.so.3()(64bit)
            削除中: gd-last-2.3.3-2.el7.remi.x86_64 (@remi-safe)
                libgd.so.3()(64bit)
            次のものにより不要にされた: : gd3php-2.3.3-7.el7.remi.x86_64 (remi-safe)
               ~libgd.so.103()(64bit)
エラー: パッケージ: php-gd-7.4.19-1.el7.remi.x86_64 (@remi-php74)
             要求: gd-last(x86-64) >= 2.1.1
            削除中: gd-last-2.3.3-2.el7.remi.x86_64 (@remi-safe)
                gd-last(x86-64) = 2.3.3-2.el7.remi
            次のものにより不要にされた: : gd3php-2.3.3-7.el7.remi.x86_64 (remi-safe)
                見つかりません
 問題を回避するために --skip-broken を用いることができます。
 これらを試行できます: rpm -Va --nofiles --nodigest

検索してみると、以下のコマンドで解決するようです(結果的にこれが良くなかった…)。

# 実はこれが間違っていた
yum update --enablerepo=remi*

# 本当は↓とするべきだった
yum update --enablerepo=remi-php74

サーバを再起動し、Moodle にアクセスしてみると「500エラー」。httpd のログでは以下のようになっています。

[Wed Jul 27 14:49:31.416516 2022] [php:error] [pid 2090:tid 2090] [client 183.76.10.172:50150] PHP Fatal error:  During inheritance of IteratorAggregate: Uncaught ArgumentCountError: Too few arguments to function default_error_handler(),

〜中略〜

.../navigationlib.php on line 897

このエラーは、PHP 8.1 で発生するエラーなのですが、サーバの PHP は 7.4。色々調べてみますが、あまり有用な情報は得られず。

念の為、PHP のバージョンを確認してみると…。

PHP Warning:  PHP Startup: Unable to load dynamic library 

〜中略〜

PHP 8.1.9RC1 (cli) (built: Jul 20 2022 04:56:47) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.9RC1, Copyright (c) Zend Technologies

8.1 になってる!エラーとともに!

最初の yum update の際、リポジトリ指定を「remi*」としてしまったため、「remi-modular-test」というリポジトリから 8.1 がダウンロードされたようです。リポジトリ「remi-php74」を使うべきでした。

7.4 に戻します。

# 削除
yum remove php*

# インストール
yum install --enablerepo=remi-php74 php php-pecl-zip php-gd php-intl php-xmlrpc php-soap php-opcache php-gd php-mbstring php-zip php-dom php-imagick php-mysqlnd

# httpd 再起動
systemctl restart httpd

正解は↓でした。

yum update --enablerepo=remi-php74

テスト環境でよかった…。

ナカタケワークス

福岡の小さな会社専用のITフリーランスです。シンプルで、地球に優しい IT 環境を。