KUSONEKOの見る世界

CentOS 8 の PHP を 7.2 から 7.4 に上げた

 CentOS 8 で、PHP7.2からPHP7.4にアップデートした時のメモです。

NextCloud 21以降、PHP7.2をサポートしなくなります。また、PHP7.4ではパフォーマンスが向上しているとのことで、アップデートをすることにしました。

PHP7.4にアップデート

# dnf module list php
CentOS Linux 8 - AppStream
Name              Stream                 Profiles                               Summary
php               7.2 [d][e]             common [d], devel, minimal             PHP scripting language
php               7.3                    common [d], devel, minimal             PHP scripting language
php               7.4                    common [d], devel, minimal             PHP scripting language

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
# dnf module install php:7.4
依存関係が解決しました。
エラー: モジュールの有効なストリームを切り替えることはできません。
モジュールからインストールされた全てのコンテンツを削除し、 'dnf module reset  <module_name>' コマンドを使用してリセットすることが推奨されます。モジュールのリセット後、他のストリームをインストール可能です。
# dnf module reset php
依存関係が解決しました。
==================================================================================================================
 パッケージ                 アーキテクチャー          バージョン                 リポジトリー               サイズ
==================================================================================================================
モジュールの再設定中:
 php

トランザクションの概要
==================================================================================================================

これでよろしいですか? [y/N]: y
完了しました!
# dnf module install php:7.4
依存関係が解決しました。
==================================================================================================================
 パッケージ             Arch            バージョン                                       リポジトリー       サイズ
==================================================================================================================
アップグレード:
 php                    x86_64          7.4.6-4.module_el8.3.0+434+2ab5050a              appstream          1.5 M
 php-bcmath             x86_64          7.4.6-4.module_el8.3.0+434+2ab5050a              appstream           80 k
 php-cli                x86_64          7.4.6-4.module_el8.3.0+434+2ab5050a              appstream          3.1 M
 php-common             x86_64          7.4.6-4.module_el8.3.0+434+2ab5050a              appstream          696 k
 php-devel              x86_64          7.4.6-4.module_el8.3.0+434+2ab5050a              appstream          728 k
 php-fpm                x86_64          7.4.6-4.module_el8.3.0+434+2ab5050a              appstream          1.6 M
 php-gd                 x86_64          7.4.6-4.module_el8.3.0+434+2ab5050a              appstream           85 k
 php-gmp                x86_64          7.4.6-4.module_el8.3.0+434+2ab5050a              appstream           76 k
 php-intl               x86_64          7.4.6-4.module_el8.3.0+434+2ab5050a              appstream          192 k
 php-json               x86_64          7.4.6-4.module_el8.3.0+434+2ab5050a              appstream           74 k
 php-ldap               x86_64          7.4.6-4.module_el8.3.0+434+2ab5050a              appstream           85 k
 php-mbstring           x86_64          7.4.6-4.module_el8.3.0+434+2ab5050a              appstream          484 k
 php-mysqlnd            x86_64          7.4.6-4.module_el8.3.0+434+2ab5050a              appstream          192 k
 php-opcache            x86_64          7.4.6-4.module_el8.3.0+434+2ab5050a              appstream          267 k
 php-pdo                x86_64          7.4.6-4.module_el8.3.0+434+2ab5050a              appstream          123 k
 php-pecl-apcu          x86_64          5.1.18-1.module_el8.3.0+396+9a0d79d6             appstream           64 k
 php-pecl-zip           x86_64          1.18.2-1.module_el8.3.0+396+9a0d79d6             appstream           55 k
 php-process            x86_64          7.4.6-4.module_el8.3.0+434+2ab5050a              appstream           85 k
 php-xml                x86_64          7.4.6-4.module_el8.3.0+434+2ab5050a              appstream          174 k
モジュールプロファイルのインストール中:
 php/common
モジュールストリームの有効化中:
 php                                    7.4

トランザクションの概要
==================================================================================================================
アップグレード  19 パッケージ

ダウンロードサイズの合計: 9.5 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
------------------------------------------------------------------------------------------------------------------
合計                                                                              7.1 MB/s | 9.5 MB     00:01
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
警告: /etc/php.ini は /etc/php.ini.rpmnew として作成されました。

警告: /etc/php-fpm.d/www.conf は /etc/php-fpm.d/www.conf.rpmnew として作成されました。

警告: /etc/php.d/10-opcache.ini は /etc/php.d/10-opcache.ini.rpmnew として作成されました。

警告: /etc/php.d/40-apcu.ini は /etc/php.d/40-apcu.ini.rpmnew として作成されました。

PHP Warning:  PHP Startup: Unable to load dynamic library 'zip.so' (tried: /usr/lib64/php/modules/zip.so (/usr/lib64/php/modules/zip.so: undefined symbol: zip_register_cancel_callback_with_state), /usr/lib64/php/modules/zip.so.so (/usr/lib64/php/modules/zip.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /usr/share/pear/PEAR/PackageFile/v2/Validator.php on line 1933
PHP Warning:  PHP Startup: Unable to load dynamic library 'zip.so' (tried: /usr/lib64/php/modules/zip.so (/usr/lib64/php/modules/zip.so: undefined symbol: zip_register_cancel_callback_with_state), /usr/lib64/php/modules/zip.so.so (/usr/lib64/php/modules/zip.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /usr/share/pear/PEAR/PackageFile/v2/Validator.php on line 1933


アップグレード済み:
  php-7.4.6-4.module_el8.3.0+434+2ab5050a.x86_64
  php-bcmath-7.4.6-4.module_el8.3.0+434+2ab5050a.x86_64
  php-cli-7.4.6-4.module_el8.3.0+434+2ab5050a.x86_64
  php-common-7.4.6-4.module_el8.3.0+434+2ab5050a.x86_64
  php-devel-7.4.6-4.module_el8.3.0+434+2ab5050a.x86_64
  php-fpm-7.4.6-4.module_el8.3.0+434+2ab5050a.x86_64
  php-gd-7.4.6-4.module_el8.3.0+434+2ab5050a.x86_64
  php-gmp-7.4.6-4.module_el8.3.0+434+2ab5050a.x86_64
  php-intl-7.4.6-4.module_el8.3.0+434+2ab5050a.x86_64
  php-json-7.4.6-4.module_el8.3.0+434+2ab5050a.x86_64
  php-ldap-7.4.6-4.module_el8.3.0+434+2ab5050a.x86_64
  php-mbstring-7.4.6-4.module_el8.3.0+434+2ab5050a.x86_64
  php-mysqlnd-7.4.6-4.module_el8.3.0+434+2ab5050a.x86_64
  php-opcache-7.4.6-4.module_el8.3.0+434+2ab5050a.x86_64
  php-pdo-7.4.6-4.module_el8.3.0+434+2ab5050a.x86_64
  php-pecl-apcu-5.1.18-1.module_el8.3.0+396+9a0d79d6.x86_64
  php-pecl-zip-1.18.2-1.module_el8.3.0+396+9a0d79d6.x86_64
  php-process-7.4.6-4.module_el8.3.0+434+2ab5050a.x86_64
  php-xml-7.4.6-4.module_el8.3.0+434+2ab5050a.x86_64

完了しました!

エラーなど

CLIではWarningが出てしまいました。

PHP Warning:  PHP Startup: Unable to load dynamic library 'zip.so' (tried: /usr/lib64/php/modules/zip.so (/usr/lib64/php/modules/zip.so: undefined symbol: zip_register_cancel_callback_with_state), /usr/lib64/php/modules/zip.so.so (/usr/lib64/php/modules/zip.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

Nextcloud上では、ZIPモジュールがインストールされていないと出てしまい、ログインができない状態となりました。

とりあえず、php-zipを入れなおしてみることにしました。

# dnf remove php-zip
依存関係が解決しました。
=====================================================================================================================
 パッケージ             アーキテクチャー バージョン                                       リポジトリー         サイズ
=====================================================================================================================
削除中:
 php-pecl-zip           x86_64           1.18.2-1.module_el8.3.0+396+9a0d79d6             @appstream           134 k
未使用の依存関係の削除:
 libzip                 x86_64           1.5.1-2.module_el8.2.0+313+b04d0a66              @AppStream           108 k


# dnf install php-zip
依存関係が解決しました。
=====================================================================================================================
 パッケージ             アーキテクチャー バージョン                                        リポジトリー        サイズ
=====================================================================================================================
インストール:
 php-pecl-zip           x86_64           1.18.2-1.module_el8.3.0+396+9a0d79d6              appstream            55 k
依存関係のインストール:
 libzip                 x86_64           1.6.1-1.module_el8.3.0+396+9a0d79d6               appstream            64 k

libzipバージョンが変わりました。
PHP7.4インストール後に、dns updateをしておけば良かったのかもしれません。

これで再び、Nextcloudにアクセスするとログインページが表示されました。

Zabbixの方では、セッションが開始できないと出て、ログインができませんでした。
nginxのerrorログでは、以下のように表示されました。

 [error] 1356#0: *86428 FastCGI sent in stderr: "PHP message: PHP Warning:  session_start(): op   en(/var/lib/php/session/sess_emg34fl6tj0ie6a815o8s3hvrh, O_RDWR) failed: ????????????? (13) in /usr/share/zabbix/i   nclude/classes/core/CSession.php on line 45PHP message: PHP Warning:  session_start(): Failed to read session data   : files (path: /var/lib/php/session) in /usr/share/zabbix/include/classes/core/CSession.php on line 45" while read   ing response header from upstream

これは単純に、/var/lib/php/session/のグループが、apacheに変わってしまっていて読み込みが出来ていないだけでした。

# chgrp nginx /var/lib/php/session

その他、Tiny Tiny RSSやrep2の動作は問題無しでした。