Amazon Linux 2 に PHP8.1 を導入する機会があったので、手順をまとめてみました。
PHP8.0 であれば amazon-linux-extras から入れることができるのですが、 PHP8.1 については amazon-linux-extras に用意されていません。 (2022年3月現在)
今回、 amazon-linux-extras から導入した PHP8.0 を、 remi リポジトリの PHP8.1 に入れ替えております。
remi リポジトリの導入
amazon-linux-extras から epel をインストール後、remi リポジトリを追加して、そこから PHP8.1 を導入することにします。
$ sudo amazon-linux-extras install epel
...
$ sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
...
PHP8.1 インストール
まず、すでにインストールされている PHP8.0 をアンインストールします。
$ sudo yum remove php-common
そして、 PHP8.1 をインストール。
$ sudo yum install php81
他に必要な PHP のモジュールがあれば併せてインストール。
$ sudo yum install php81-php-mbstring php81-php-pdo php81-php-gd php81-php-mysqlnd php81-php-xml
$ php81 -v
PHP 8.1.0 (cli) (built: Nov 23 2021 18:56:11) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.0, Copyright (c) Zend Technologies
無事インストールできたようです。
alternatives
ただ php とコマンドを打っても認識できない状態なので、 alternatives で変更します。
$ php -v
-bash: php: コマンドが見つかりません
$ sudo alternatives --install /usr/bin/php php /usr/bin/php81 1
$ php -v
PHP 8.1.0 (cli) (built: Nov 23 2021 18:56:11) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.0, Copyright (c) Zend Technologies
php コマンドが使えるようになりました。
php-zip が入らない...
ところが後日、php-zip を導入しようとしたところ、 libzip5 と libzip がコンフリクトして、導入できません。
$ sudo yum install php81-php-pecl-zip
<中略>
Transaction check error:
file /usr/lib64/libzip.so.5 from install of libzip5-1.8.0-2.el7.remi.x86_64 conflicts with file from package libzip-1.3.2-1.amzn2.0.1.x86_64
libzip を削除してから、 php-zip パッケージを導入してみました。
$ sudo yum remove libzip
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ libzip.x86_64 0:1.3.2-1.amzn2.0.1 を 削除
--> 依存性解決を終了しました。
依存性を解決しました
===================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
===================================================================================================================
削除中:
libzip x86_64 1.3.2-1.amzn2.0.1 @amzn2-core 117 k
トランザクションの要約
===================================================================================================================
削除 1 パッケージ
インストール容量: 117 k
上記の処理を行います。よろしいでしょうか? [y/N]y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
削除中 : libzip-1.3.2-1.amzn2.0.1.x86_64 1/1
検証中 : libzip-1.3.2-1.amzn2.0.1.x86_64 1/1
削除しました:
libzip.x86_64 0:1.3.2-1.amzn2.0.1
完了しました!
幸い、依存パッケージは無かったようです。
$ sudo yum install php81-php-pecl-zip
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
ロックファイル /var/run/yum.pid が存在します: PID 13752 として別に実行されています。
Another app is currently holding the yum lock; waiting for it to exit...
他のアプリケーション: yum
メモリー: 333 M RSS (550 MB VSZ)
開始 : Wed Mar 23 18:06:03 2022 - 00:06 秒経過
状態 : 実行中、PID: 13752
Another app is currently holding the yum lock; waiting for it to exit...
他のアプリケーション: yum
メモリー: 334 M RSS (551 MB VSZ)
開始 : Wed Mar 23 18:06:03 2022 - 00:08 秒経過
状態 : 実行中、PID: 13752
219 packages excluded due to repository priority protections
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ php81-php-pecl-zip.x86_64 0:1.20.0-1.el7.remi を インストール
--> 依存性の処理をしています: libzip5(x86-64) >= 1.8.0 のパッケージ: php81-php-pecl-zip-1.20.0-1.el7.remi.x86_64
--> 依存性の処理をしています: libzip.so.5()(64bit) のパッケージ: php81-php-pecl-zip-1.20.0-1.el7.remi.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ libzip5.x86_64 0:1.8.0-2.el7.remi を インストール
--> 依存性の処理をしています: libzstd(x86-64) >= 1.3.6 のパッケージ: libzip5-1.8.0-2.el7.remi.x86_64
--> 依存性の処理をしています: libzstd.so.1()(64bit) のパッケージ: libzip5-1.8.0-2.el7.remi.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ libzstd.x86_64 0:1.5.2-1.amzn2 を インストール
--> 依存性解決を終了しました。
依存性を解決しました
===================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
===================================================================================================================
インストール中:
php81-php-pecl-zip x86_64 1.20.0-1.el7.remi remi-safe 55 k
依存性関連でのインストールをします:
libzip5 x86_64 1.8.0-2.el7.remi remi-safe 64 k
libzstd x86_64 1.5.2-1.amzn2 amzn2-core 284 k
トランザクションの要約
===================================================================================================================
インストール 1 パッケージ (+2 個の依存関係のパッケージ)
合計容量: 403 k
インストール容量: 1.0 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : libzstd-1.5.2-1.amzn2.x86_64 1/3
インストール中 : libzip5-1.8.0-2.el7.remi.x86_64 2/3
インストール中 : php81-php-pecl-zip-1.20.0-1.el7.remi.x86_64 3/3
検証中 : libzstd-1.5.2-1.amzn2.x86_64 1/3
検証中 : libzip5-1.8.0-2.el7.remi.x86_64 2/3
検証中 : php81-php-pecl-zip-1.20.0-1.el7.remi.x86_64 3/3
インストール:
php81-php-pecl-zip.x86_64 0:1.20.0-1.el7.remi
依存性関連をインストールしました:
libzip5.x86_64 0:1.8.0-2.el7.remi libzstd.x86_64 0:1.5.2-1.amzn2
完了しました!
無事 php-zip パッケージの ZipArchive クラスが利用できるようになりました。