LoginSignup
4
1

More than 3 years have passed since last update.

CentOS-8のremi レポジトリーのphp-7.3をphp-7.4にアップデートする

Last updated at Posted at 2020-12-06

毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。

0. はじめに

CentOS-8 で動いているPHP7.3をPHP7.4にアップデートした、というなんのヒネりもない話です。

※補足:NextcloudはPHPで動くサーバーアプリケーションですが、remiレポジトリーのPHPをこれまでずっと使ってきました。CentOS-8でも、ありがたく使わせて頂いているわけですが、CentOS-8になってからPHPのバージョン毎のレポジトリーの切り替え方法がちょっと変わっていて、その話です。

1. インストールされているPHP

インストールされているPHPは、remi-php7.3です。
dnf module info で確認します。
streamのremi-7.3に[e] [a]が付いていて、enabledでactiveだというのを示しています。

dnf module info php:remi-7.3
Last metadata expiration check: 0:46:59 ago on Wed 25 Nov 2020 05:43:05 PM JST.
Name             : php
Stream           : remi-7.3 [e] [a]
Version          : 20201125071936
Context          : 00000000
Architecture     : x86_64
Profiles         : common [d], devel, minimal
Default profiles : common
Repo             : remi-modular
Summary          : PHP scripting language
Description      : Alternative php 7.3 module. The remi-7.3 stream provides more recent versions and more packages than default 7.3 stream.
Requires         : platform:[el8]
<<<------>>>
インストールされているPHPパッケージのリスト
# yum list installed php\*
Installed Packages
php-bcmath.x86_64                                                     7.3.25-1.el8.remi                                                   @remi-modular
php-cli.x86_64                                                        7.3.25-1.el8.remi                                                   @remi-modular
php-common.x86_64                                                     7.3.25-1.el8.remi                                                   @remi-modular
php-devel.x86_64                                                      7.3.25-1.el8.remi                                                   @remi-modular
php-fpm.x86_64                                                        7.3.25-1.el8.remi                                                   @remi-modular
php-gd.x86_64                                                         7.3.25-1.el8.remi                                                   @remi-modular
php-gmp.x86_64                                                        7.3.25-1.el8.remi                                                   @remi-modular
php-intl.x86_64                                                       7.3.25-1.el8.remi                                                   @remi-modular
php-json.x86_64                                                       7.3.25-1.el8.remi                                                   @remi-modular
php-ldap.x86_64                                                       7.3.25-1.el8.remi                                                   @remi-modular
php-mbstring.x86_64                                                   7.3.25-1.el8.remi                                                   @remi-modular
php-mysqlnd.x86_64                                                    7.3.25-1.el8.remi                                                   @remi-modular
php-opcache.x86_64                                                    7.3.25-1.el8.remi                                                   @remi-modular
php-pdo.x86_64                                                        7.3.25-1.el8.remi                                                   @remi-modular
php-pecl-apcu.x86_64                                                  5.1.19-1.el8.remi.7.3                                               @remi-modular
php-pecl-igbinary.x86_64                                              3.1.6-1.el8.remi.7.3                                                @remi-modular
php-pecl-imagick.x86_64                                               3.4.4-10.el8.remi.7.3                                               @remi-modular
php-pecl-mcrypt.x86_64                                                1.0.3-1.el8.remi.7.3                                                @remi-modular
php-pecl-redis4.x86_64                                                4.3.0-2.el8.remi.7.3                                                @remi-modular
php-pecl-zip.x86_64                                                   1.19.2-1.el8.remi.7.3                                               @remi-modular
php-process.x86_64                                                    7.3.25-1.el8.remi                                                   @remi-modular
php-smbclient.x86_64                                                  1.0.0-1.el8.remi.7.3                                                @remi-modular
php-soap.x86_64                                                       7.3.25-1.el8.remi                                                   @remi-modular
php-xml.x86_64                                                        7.3.25-1.el8.remi                                                   @remi-modular

2. remi php-7.3モジュールをresetする

dnf module reset php:remi-7.3
Last metadata expiration check: 0:49:13 ago on Wed 25 Nov 2020 05:43:05 PM JST.
Only module name is required. Ignoring unneeded information in argument: 'php:remi-7.3'
Dependencies resolved.
=======================================================================================================================================================
 Package                             Architecture                       Version                              Repository                           Size
=======================================================================================================================================================
Resetting modules:
 php

Transaction Summary
=======================================================================================================================================================

Is this ok [y/N]: y
Complete!

dnf module reset php でよかったみたい。。

3. remi php-7.4を有効化する

dnf module enable php:remi-7.4
Last metadata expiration check: 0:49:39 ago on Wed 25 Nov 2020 05:43:05 PM JST.
Dependencies resolved.
=======================================================================================================================================================
 Package                             Architecture                       Version                              Repository                           Size
=======================================================================================================================================================
Enabling module streams:
 php                                                                    remi-7.4

Transaction Summary
=======================================================================================================================================================

Is this ok [y/N]: y
Complete!

4. インストールされたモジュールを確認する

# dnf module info php:remi-7.4
Last metadata expiration check: 1:06:47 ago on Wed 25 Nov 2020 05:43:05 PM JST.
Name             : php
Stream           : remi-7.4 [e] [a]
Version          : 20201125071937
Context          : 00000000
Architecture     : x86_64
Profiles         : common [d], devel, minimal
Default profiles : common
Repo             : remi-modular
Summary          : PHP scripting language
Description      : Alternative php 7.4 module. The remi-7.4 stream provides more recent versions and more packages than default 7.4 stream.
Requires         : platform:[el8]
--- 略 ---

5. パッケージをphp-7.4にアップデートする

yum update でインストールされているパッケージがPHP7.3のものからPHP7.4へアップデートされる。

yum update
Last metadata expiration check: 1:10:53 ago on Wed 25 Nov 2020 05:43:05 PM JST.
Dependencies resolved.
=======================================================================================================================================================
 Package                                Architecture                Version                                    Repository                         Size
=======================================================================================================================================================
Installing:
 php-pecl-redis5                        x86_64                      5.3.2-1.el8.remi.7.4                       remi-modular                      265 k
     replacing  php-pecl-redis4.x86_64 4.3.0-2.el8.remi.7.3
Upgrading:
 php-bcmath                             x86_64                      7.4.13-1.el8.remi                          remi-modular                       83 k
 php-cli                                x86_64                      7.4.13-1.el8.remi                          remi-modular                      4.6 M
 php-common                             x86_64                      7.4.13-1.el8.remi                          remi-modular                      1.2 M
 php-devel                              x86_64                      7.4.13-1.el8.remi                          remi-modular                      1.1 M
 php-fpm                                x86_64                      7.4.13-1.el8.remi                          remi-modular                      1.6 M
 php-gd                                 x86_64                      7.4.13-1.el8.remi                          remi-modular                       92 k
 php-gmp                                x86_64                      7.4.13-1.el8.remi                          remi-modular                       83 k
 php-intl                               x86_64                      7.4.13-1.el8.remi                          remi-modular                      241 k
 php-json                               x86_64                      7.4.13-1.el8.remi                          remi-modular                       76 k
 php-ldap                               x86_64                      7.4.13-1.el8.remi                          remi-modular                       96 k
 php-mbstring                           x86_64                      7.4.13-1.el8.remi                          remi-modular                      528 k
 php-mysqlnd                            x86_64                      7.4.13-1.el8.remi                          remi-modular                      259 k
 php-opcache                            x86_64                      7.4.13-1.el8.remi                          remi-modular                      335 k
 php-pdo                                x86_64                      7.4.13-1.el8.remi                          remi-modular                      143 k
 php-pecl-apcu                          x86_64                      5.1.19-1.el8.remi.7.4                      remi-modular                       83 k
 php-pecl-igbinary                      x86_64                      3.1.6-1.el8.remi.7.4                       remi-modular                      161 k
 php-pecl-imagick                       x86_64                      3.4.4-10.el8.remi.7.4                      remi-modular                      182 k
 php-pecl-mcrypt                        x86_64                      1.0.3-1.el8.remi.7.4                       remi-modular                       35 k
 php-pecl-zip                           x86_64                      1.19.2-1.el8.remi.7.4                      remi-modular                       66 k
 php-process                            x86_64                      7.4.13-1.el8.remi                          remi-modular                       98 k
 php-smbclient                          x86_64                      1.0.0-7.el8.remi.7.4                       remi-modular                       50 k
 php-soap                               x86_64                      7.4.13-1.el8.remi                          remi-modular                      227 k
 php-xml                                x86_64                      7.4.13-1.el8.remi                          remi-modular                      214 k
Installing dependencies:
 php-pecl-msgpack                       x86_64                      2.1.1-1.el8.remi.7.4                       remi-modular                       65 k

Transaction Summary
=======================================================================================================================================================
Install   2 Packages
Upgrade  23 Packages

Total download size: 12 M
Is this ok [y/N]:

6. 念のため、.rpmnewファイルを確認しておく

問題ないと思うが、rpmnewファイルが2つできているのでdiffを取って確認する

warning: /etc/php.ini created as /etc/php.ini.rpmnew
warning: /etc/php.d/10-opcache.ini created as /etc/php.d/10-opcache.ini.rpmnew

/etc/php.iniは、2カ所修正
/etc/php.d/10-opcache.iniは、問題なかった

phpのバージョンを確認しておく

# php -v
PHP 7.4.13 (cli) (built: Nov 24 2020 10:03:34) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.13, Copyright (c), by Zend Technologies

# php-fpm -v
PHP 7.4.13 (fpm-fcgi) (built: Nov 24 2020 10:03:34)
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.13, Copyright (c), by Zend Technologies

7. 問題ないのでサービスを起動する

systemctl start php-fpm
systemctl start nginx

8. 障害対応

Nextcloudでログインしようとしたが、ログインできなくなっていた。
どうも、パスワードハッシュのタイプが変わってしまっていて、
php-sodium.x86_64 が必要になっていた。

image.png

PHP: 下位互換性のない変更点 - Manual
https://www.php.net/manual/ja/migration74.incompatible.php

Unable to login after Fedora 31>32 upgrade · Issue #21100 · nextcloud/server
https://github.com/nextcloud/server/issues/21100

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1