22
10

More than 1 year has passed since last update.

Amazon Linux 2 に PHP8.1 を導入する

Last updated at Posted at 2022-03-26

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 クラスが利用できるようになりました。

22
10
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
22
10