PHPのバージョンを7.1から7.3に上げたので手順を公開

やったこと

yumで削除&インストール

まず今動作しているPHP7.1を削除します。yumでインストールしたものなので以下のコマンドでPHP関連を全て削除します。

yum remove php*

PHP7.3関連をyumでインストールします。

yum install --enablerepo=remi,remi-php73 php php-devel php-common php-mbstring php-openssl php-mysqlnd php-pdo php-pecl-apcu php-xml php-pear php-gd php-pecl-mcrypt php-pecl-redis php-opcache

事前にphp.iniのバックアップをしてください。upload_max_filesizeやpost_max_sizeといったの容量制限を変えていたりする可能性があると思いますので。

yumでエラー

PHP7.3をインストールしようとすると以下のようなエラーが表示されて失敗しました。

読み込んだプラグイン:fastestmirror, priorities, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp-srv2.kddilabs.jp
 * centosplus: ftp-srv2.kddilabs.jp
 * contrib: ftp-srv2.kddilabs.jp
 * epel: mirrors.aliyun.com
 * extras: ftp-srv2.kddilabs.jp
 * remi: ftp.riken.jp
 * remi-php73: ftp.riken.jp
 * remi-safe: ftp.riken.jp
 * updates: ftp-srv2.kddilabs.jp
The most popular database for modern apps
We're the creators of MongoDB, the most popular database for modern apps, and MongoDB Atlas, the global cloud database on AWS, Azure, and GCP. Easily organize, ...
[Errno 14] Downloaded more than max size for https://www.mongodb.com/: 126309 > 102400 他のミラーを試します。 352 packages excluded due to repository priority protections パッケージ php-mcrypt は php-pecl-mcrypt によって不要になりました。代わりに php-pecl-mcrypt-1.0.2-2.el6.remi.7.3.x86_64 のインストールを試みています。 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package php.x86_64 0:5.3.3-49.el6 will be インストール --> 依存性の処理をしています: php-cli(x86-64) = 5.3.3-49.el6 のパッケージ: php-5.3.3-49.el6.x86_64 ---> Package php-common.x86_64 0:5.3.3-49.el6 will be インストール ---> Package php-devel.x86_64 0:5.3.3-49.el6 will be インストール ---> Package php-gd.x86_64 0:5.3.3-49.el6 will be インストール ---> Package php-mbstring.x86_64 0:5.3.3-49.el6 will be インストール ---> Package php-mysqlnd.x86_64 0:7.3.8-1.el6.remi will be インストール --> 依存性の処理をしています: php-pdo(x86-64) = 7.3.8-1.el6.remi のパッケージ: php-mysqlnd-7.3.8-1.el6.remi.x86_64 ---> Package php-pdo.x86_64 0:5.3.3-49.el6 will be インストール ---> Package php-pear.noarch 1:1.9.4-5.el6 will be インストール ---> Package php-pecl-apcu.x86_64 0:5.1.17-2.el6.remi.7.3 will be インストール --> 依存性の処理をしています: php(zend-abi) = 20180731-64 のパッケージ: php-pecl-apcu-5.1.17-2.el6.remi.7.3.x86_64 --> 依存性の処理をしています: php(api) = 20180731-64 のパッケージ: php-pecl-apcu-5.1.17-2.el6.remi.7.3.x86_64 ---> Package php-pecl-mcrypt.x86_64 0:1.0.2-2.el6.remi.7.3 will be インストール --> 依存性の処理をしています: php(zend-abi) = 20180731-64 のパッケージ: php-pecl-mcrypt-1.0.2-2.el6.remi.7.3.x86_64 --> 依存性の処理をしています: php(api) = 20180731-64 のパッケージ: php-pecl-mcrypt-1.0.2-2.el6.remi.7.3.x86_64 ---> Package php-xml.x86_64 0:5.3.3-49.el6 will be インストール --> トランザクションの確認を実行しています。 ---> Package php-cli.x86_64 0:5.3.3-49.el6 will be インストール ---> Package php-mysqlnd.x86_64 0:7.3.8-1.el6.remi will be インストール --> 依存性の処理をしています: php-pdo(x86-64) = 7.3.8-1.el6.remi のパッケージ: php-mysqlnd-7.3.8-1.el6.remi.x86_64 ---> Package php-pecl-apcu.x86_64 0:5.1.17-2.el6.remi.7.3 will be インストール --> 依存性の処理をしています: php(zend-abi) = 20180731-64 のパッケージ: php-pecl-apcu-5.1.17-2.el6.remi.7.3.x86_64 --> 依存性の処理をしています: php(api) = 20180731-64 のパッケージ: php-pecl-apcu-5.1.17-2.el6.remi.7.3.x86_64 ---> Package php-pecl-mcrypt.x86_64 0:1.0.2-2.el6.remi.7.3 will be インストール --> 依存性の処理をしています: php(zend-abi) = 20180731-64 のパッケージ: php-pecl-mcrypt-1.0.2-2.el6.remi.7.3.x86_64 --> 依存性の処理をしています: php(api) = 20180731-64 のパッケージ: php-pecl-mcrypt-1.0.2-2.el6.remi.7.3.x86_64 --> 依存性解決を終了しました。 エラー: パッケージ: php-pecl-apcu-5.1.17-2.el6.remi.7.3.x86_64 (remi-php73) 要求: php(zend-abi) = 20180731-64 インストールしています: php-common-5.3.3-49.el6.x86_64 (base) php(zend-abi) = 20090626 エラー: パッケージ: php-pecl-mcrypt-1.0.2-2.el6.remi.7.3.x86_64 (remi-php73) 要求: php(zend-abi) = 20180731-64 インストールしています: php-common-5.3.3-49.el6.x86_64 (base) php(zend-abi) = 20090626 エラー: パッケージ: php-mysqlnd-7.3.8-1.el6.remi.x86_64 (remi-php73) 要求: php-pdo(x86-64) = 7.3.8-1.el6.remi インストールしています: php-pdo-5.3.3-49.el6.x86_64 (base) php-pdo(x86-64) = 5.3.3-49.el6 エラー: パッケージ: php-pecl-mcrypt-1.0.2-2.el6.remi.7.3.x86_64 (remi-php73) 要求: php(api) = 20180731-64 インストールしています: php-common-5.3.3-49.el6.x86_64 (base) php(api) = 20090626 エラー: パッケージ: php-pecl-apcu-5.1.17-2.el6.remi.7.3.x86_64 (remi-php73) 要求: php(api) = 20180731-64 インストールしています: php-common-5.3.3-49.el6.x86_64 (base) php(api) = 20090626 問題を回避するために --skip-broken を用いることができません これらを試行できます: rpm -Va --nofiles --nodigest

解決方法

エラーメッセージをよく見るとphp.x86_64 0:5.3.3-49.el6という5.3という数字が目につきました。自分としては7.3にしようとしているのにどこかがおかしくて違うバージョンがインストールされてようとしているのでは?と推測しました。

remi-php73の設定ファイルにpriority=1を追加します。

vi /etc/yum.repos.d/remi-php73.repo 
[remi-php73]
priority=1

priority=1を追加して再度インストールのコマンドを実行すると成功しました。

# php -v
PHP 7.3.8 (cli) (built: Jul 30 2019 17:36:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.8, Copyright (c) 1998-2018 Zend Technologies

php.iniが新しくなっているので必要に応じてupload_max_filesize等の設定を変更して完了です。

コメント

タイトルとURLをコピーしました