2022.7.27
【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
テスト環境でよかった…。