Linux

CentOS Stream 8 の PHP 7.2 を 7.4 に変更する

投稿日:2021年6月8日 更新日:

1. はじめに

CentOS Stream 8 に入っていた PHP のバージョンが 7.2 だったので、7.4 に上げました。

2. 現在の状況

OS

$ cat /etc/redhat-release 
CentOS Stream release 8

PHP

$ sudo dnf list installed | grep -i php 
php.x86_64                           7.2.24-1.module_el8.2.0+313+b04d0a66    @AppStream 
php-cli.x86_64                       7.2.24-1.module_el8.2.0+313+b04d0a66    @AppStream 
php-common.x86_64                    7.2.24-1.module_el8.2.0+313+b04d0a66    @AppStream 
php-dbg.x86_64                       7.2.24-1.module_el8.2.0+313+b04d0a66    @AppStream 
php-devel.x86_64                     7.2.24-1.module_el8.2.0+313+b04d0a66    @appstream 
php-fpm.x86_64                       7.2.24-1.module_el8.2.0+313+b04d0a66    @AppStream 
php-gd.x86_64                        7.2.24-1.module_el8.2.0+313+b04d0a66    @AppStream 
php-json.x86_64                      7.2.24-1.module_el8.2.0+313+b04d0a66    @AppStream 
php-mbstring.x86_64                  7.2.24-1.module_el8.2.0+313+b04d0a66    @AppStream 
php-mysqlnd.x86_64                   7.2.24-1.module_el8.2.0+313+b04d0a66    @AppStream 
php-opcache.x86_64                   7.2.24-1.module_el8.2.0+313+b04d0a66    @AppStream 
php-pdo.x86_64                       7.2.24-1.module_el8.2.0+313+b04d0a66    @AppStream 
php-pear.noarch                      1:1.10.5-9.module_el8.2.0+313+b04d0a66  @appstream 
php-pecl-zip.x86_64                  1.15.3-1.module_el8.2.0+313+b04d0a66    @AppStream 
php-process.x86_64                   7.2.24-1.module_el8.2.0+313+b04d0a66    @appstream 
php-xml.x86_64                       7.2.24-1.module_el8.2.0+313+b04d0a66    @appstream

PHP(dnf module コマンドによる確認)

$ dnf module list php
CentOS Stream 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
  • [i] がないので、module としてはどれもインストールされていないことが分かります。
  • 出力された中に Name, Stream, Profiles という列がありますが、モジュールをインストールするコマンドは、「dnf module install {Name}:{Stream}/{Profile}」となります。Stream と Profile は省略が可能で、その場合は [d] (デフォルト)と表示されている項目が選択されます。

3. PHP を 7.4 に変更する作業

Webサーバーを止めておきます。

$ sudo systemctl stop httpd
$ sudo systemctl stop php-fpm

module として PHP 7.4 をインストールします。

※「…[snip]…」は省略を表しています。

$ sudo dnf module install php:7.4/common

...[snip]...
オペレーションは、モジュール 'php' ストリーム '7.2' を ストリーム '7.4' へと切り替える結果となります 
エラー: モジュールの有効なストリームを切り替えることはできません。 
モジュールからインストールされた全てのコンテンツを削除し、 'dnf module reset <module_name>' コマンドを使用してリセットすることが推奨されます。モジュールのリセット後、他のストリームをインストール可能です。
  • エラーになりました。

エラーメッセージで指示された通り、dnf module reset php を実行します。

$ sudo dnf module reset php

再度、PHP 7.4 のインストールします。

$ sudo dnf module install php:7.4/common

...[snip]...
====================================================================================================== 
 パッケージ               Arch        バージョン                                 リポジトリー   サイズ 
====================================================================================================== 
アップグレード: 
 php                      x86_64      7.4.19-1.module_el8.5.0+815+1c4fd2e5       appstream      1.5 M 
 php-cli                  x86_64      7.4.19-1.module_el8.5.0+815+1c4fd2e5       appstream      3.1 M 
 php-common               x86_64      7.4.19-1.module_el8.5.0+815+1c4fd2e5       appstream      702 k 
 php-dbg                  x86_64      7.4.19-1.module_el8.5.0+815+1c4fd2e5       appstream      1.6 M 
 php-devel                x86_64      7.4.19-1.module_el8.5.0+815+1c4fd2e5       appstream      728 k 
 php-fpm                  x86_64      7.4.19-1.module_el8.5.0+815+1c4fd2e5       appstream      1.6 M 
 php-gd                   x86_64      7.4.19-1.module_el8.5.0+815+1c4fd2e5       appstream       85 k 
 php-json                 x86_64      7.4.19-1.module_el8.5.0+815+1c4fd2e5       appstream       74 k 
 php-mbstring             x86_64      7.4.19-1.module_el8.5.0+815+1c4fd2e5       appstream      484 k 
 php-mysqlnd              x86_64      7.4.19-1.module_el8.5.0+815+1c4fd2e5       appstream      193 k 
 php-opcache              x86_64      7.4.19-1.module_el8.5.0+815+1c4fd2e5       appstream      267 k 
 php-pdo                  x86_64      7.4.19-1.module_el8.5.0+815+1c4fd2e5       appstream      123 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.19-1.module_el8.5.0+815+1c4fd2e5       appstream       85 k 
 php-xml                  x86_64      7.4.19-1.module_el8.5.0+815+1c4fd2e5       appstream      174 k 
依存関係のインストール: 
 cmake-filesystem         x86_64      3.18.2-9.el8                               appstream       44 k 
 keyutils-libs-devel      x86_64      1.5.10-6.el8                               baseos          48 k 
 krb5-devel               x86_64      1.18.2-10.el8                              baseos         559 k 
 libcom_err-devel         x86_64      1.45.6-1.el8                               baseos          38 k 
 libkadm5                 x86_64      1.18.2-10.el8                              baseos         186 k 
 libselinux-devel         x86_64      2.9-5.el8                                  baseos         200 k 
 libsepol-devel           x86_64      2.9-2.el8                                  baseos          86 k 
 libverto-devel           x86_64      0.3.0-5.el8                                baseos          18 k 
 libxml2-devel            x86_64      2.9.7-11.el8                               baseos         1.0 M 
 oniguruma                x86_64      6.8.2-2.el8                                appstream      187 k 
 openssl-devel            x86_64      1:1.1.1k-1.el8                             baseos         2.3 M 
 pcre2-devel              x86_64      10.32-2.el8                                baseos         605 k 
 pcre2-utf16              x86_64      10.32-2.el8                                baseos         229 k 
 pcre2-utf32              x86_64      10.32-2.el8                                baseos         220 k 
 xz-devel                 x86_64      5.2.4-3.el8                                baseos          62 k 
モジュールプロファイルのインストール中: 
 php/common 
モジュールストリームの有効化中: 
 php                                  7.4 
トランザクションの概要 
====================================================================================================== 
インストール    15 パッケージ 
アップグレード  15 パッケージ 
ダウンロードサイズの合計: 17 M 
これでよろしいですか? [y/N]: y

...[snip]...

アップグレード済み: 
  php-7.4.19-1.module_el8.5.0+815+1c4fd2e5.x86_64 
  php-cli-7.4.19-1.module_el8.5.0+815+1c4fd2e5.x86_64 
  php-common-7.4.19-1.module_el8.5.0+815+1c4fd2e5.x86_64 
  php-dbg-7.4.19-1.module_el8.5.0+815+1c4fd2e5.x86_64 
  php-devel-7.4.19-1.module_el8.5.0+815+1c4fd2e5.x86_64 
  php-fpm-7.4.19-1.module_el8.5.0+815+1c4fd2e5.x86_64 
  php-gd-7.4.19-1.module_el8.5.0+815+1c4fd2e5.x86_64 
  php-json-7.4.19-1.module_el8.5.0+815+1c4fd2e5.x86_64 
  php-mbstring-7.4.19-1.module_el8.5.0+815+1c4fd2e5.x86_64 
  php-mysqlnd-7.4.19-1.module_el8.5.0+815+1c4fd2e5.x86_64 
  php-opcache-7.4.19-1.module_el8.5.0+815+1c4fd2e5.x86_64 
  php-pdo-7.4.19-1.module_el8.5.0+815+1c4fd2e5.x86_64 
  php-pecl-zip-1.18.2-1.module_el8.3.0+396+9a0d79d6.x86_64 
  php-process-7.4.19-1.module_el8.5.0+815+1c4fd2e5.x86_64 
  php-xml-7.4.19-1.module_el8.5.0+815+1c4fd2e5.x86_64 
インストール済み: 
  cmake-filesystem-3.18.2-9.el8.x86_64             keyutils-libs-devel-1.5.10-6.el8.x86_64 
  krb5-devel-1.18.2-10.el8.x86_64                  libcom_err-devel-1.45.6-1.el8.x86_64 
  libkadm5-1.18.2-10.el8.x86_64                    libselinux-devel-2.9-5.el8.x86_64 
  libsepol-devel-2.9-2.el8.x86_64                  libverto-devel-0.3.0-5.el8.x86_64 
  libxml2-devel-2.9.7-11.el8.x86_64                oniguruma-6.8.2-2.el8.x86_64 
  openssl-devel-1:1.1.1k-1.el8.x86_64              pcre2-devel-10.32-2.el8.x86_64 
  pcre2-utf16-10.32-2.el8.x86_64                   pcre2-utf32-10.32-2.el8.x86_64 
  xz-devel-5.2.4-3.el8.x86_64 
完了しました!
  • インストールできたようです。

PHP のバージョンを確認します。

$ php -v
Failed loading /usr/lib64/php/modules/xdebug.so:  /usr/lib64/php/modules/xdebug.so: undefined symbol: gc_globals 
PHP 7.4.19 (cli) (built: May  4 2021 11:06:37) ( NTS ) 
Copyright (c) The PHP Group 
Zend Engine v3.4.0, Copyright (c) Zend Technologies 
    with Zend OPcache v7.4.19, Copyright (c), by Zend Technologies
  • バージョンが 7.4.19 になりました。
  • しかし、xdebug のエラーが発生しているので、この後対応します。

php に関する module の状況を確認します。

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

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
  • 7.4 の common に [i] が表示されているので、インストールできていることが分かります。

4. xdebugの更新

以前導入していた xdebug がそのまま残っているようですが、PHP 7.4 に対応していないので、xdebug も更新します。

メモ

  • 以前の /usr/lib64/php/modules/xdebug.so が残ったままになっている。
  • xdebug の設定ファイル /etc/php.d/30-xdebug.ini も残ったままになっている。

まず、php 7.4 の devel(PHP拡張のビルドに必要)という Profile をインストールします。

$ sudo dnf module install php:7.4/devel
...[snip]...
====================================================================================================== 
 パッケージ      Arch          バージョン                                      リポジトリー     サイズ 
====================================================================================================== 
アップグレード: 
 libzip          x86_64        1.6.1-1.module_el8.3.0+396+9a0d79d6             appstream         64 k 
 php-pear        noarch        1:1.10.12-1.module_el8.3.0+396+9a0d79d6         appstream        361 k 
モジュールプロファイルのインストール中: 
 php/devel 
トランザクションの概要 
====================================================================================================== 
アップグレード  2 パッケージ 
ダウンロードサイズの合計: 425 k 
これでよろしいですか? [y/N]: y

...[snip]...

アップグレード済み: 
  libzip-1.6.1-1.module_el8.3.0+396+9a0d79d6.x86_64 
  php-pear-1:1.10.12-1.module_el8.3.0+396+9a0d79d6.noarch 
完了しました!

pecl コマンドのバージョンを確認します。

$ sudo pear version 

...[snip]...
PEAR Version: 1.10.12 
PHP Version: 7.4.19 
Zend Engine Version: 3.4.0 
...[snip]...

xdebug を上書き(?)インストールします。

$ sudo pecl channel-update pecl.php.net 
$ sudo pecl install xdebug 

...[snip]...

running: make INSTALL_ROOT="/var/tmp/pear-build-rootXXXXXX/install-xdebug-3.0.4" install 
Makefile:228: 警告: ターゲット 'test' のためのレシピを置き換えます 
Makefile:132: 警告: ターゲット 'test' のための古いレシピは無視されます 
Installing shared extensions:     /var/tmp/pear-build-rootXXXXXX/install-xdebug-3.0.4/usr/lib64/php/modules/ 
  +----------------------------------------------------------------------+ 
  |                                                                      | 
  |   INSTALLATION INSTRUCTIONS                                          | 
  |   =========================                                          | 
  |                                                                      | 
  |   See https://xdebug.org/install.php#configure-php for instructions  | 
  |   on how to enable Xdebug for PHP.                                   | 
  |                                                                      | 
  |   Documentation is available online as well:                         | 
  |   - A list of all settings:  https://xdebug.org/docs-settings.php    | 
  |   - A list of all functions: https://xdebug.org/docs-functions.php   | 
  |   - Profiling instructions:  https://xdebug.org/docs-profiling2.php  | 
  |   - Remote debugging:        https://xdebug.org/docs-debugger.php    | 
  |                                                                      | 
  |                                                                      | 
  |   NOTE: Please disregard the message                                 | 
  |       You should add "extension=xdebug.so" to php.ini                | 
  |   that is emitted by the PECL installer. This does not work for      | 
  |   Xdebug.                                                            | 
  |                                                                      | 
  +----------------------------------------------------------------------+

...[snip]...

Build process completed successfully 
Installing '/usr/lib64/php/modules/xdebug.so' 
install ok: channel://pecl.php.net/xdebug-3.0.4 
configuration option "php_ini" is not set to php.ini location 
You should add "zend_extension=/usr/lib64/php/modules/xdebug.so" to php.ini

生成された xdebug.so ファイルのパーミッションを変更します。

$ sudo chmod a+x /usr/lib64/php/modules/xdebug.so
  • /etc/php.d/30-xdebug.ini ファイルを編集する必要はなかった。

Webサーバーを起動します。

$ sudo systemctl start php-fpm
$ sudo systemctl stop httpd 

以上です。

5. 参考

📂-Linux

執筆者:labo


comment

メールアドレスが公開されることはありません。

関連記事

Linux

sed コマンドの基本形式

sed コマンドの基本的な指定形式について説明します。

Google App Engine

Ubuntu 18.04 (WSL) に、Google Cloud SDK をインストールする

Ubuntu 18.04 (WSL) に、Google Cloud SDK をインストールする手順を紹介します。

Linux

du コマンドのエイリアスをメモ

du コマンドのエイリアスをメモ。

Linux

ドキュメントルートに chmod コマンドを実行する際、指定すると便利なモード引数

目次1. はじめに2. chmod に関する前提知識3. ディレクトリは rwxr-xr-x ファイルは rw-r–r– にする解説4. ディレクトリは rwxrwxr-x ファイルは rw-rw …

Linux

pip install でインストールしたパッケージを使おうとするエラーが発生する

目次1. はじめに2. 環境3. 対処方法4. おわりに 1. はじめに 以下のコマンドで、Python のパッケージをシステムにインストールしたとします。 $ sudo pip install {パ …