Amazon Linux 2023のDockerイメージにPHP7.3.31をインストールする

PHPに限った話ではありませんが、プロジェクトの都合によっては新機能やバグ修正の入っている最新版ではなく、

これまで動作実績のある古いバージョンの処理系を使うといったこともあり得ます。

 

今回はAmazon Linux 2023のDockerベースイメージにPHP7.3.31をインストールする方法を紹介します。

 

LinuxへPHPをインストールする方法は以下の通りいくつか存在します。
        1. デフォルトに設定されているリポジトリからインストールする
        2. Remiリポジトリからインストールする
        3. ソースコードからビルドする
以下、それぞれの選択肢について検討します。

(phpenvも選択肢としてありますが、内部的にはソースからビルドしていて
ソースコードからビルドする方法とカブるので今回は検討から除外します。)

 

デフォルトに設定されているリポジトリからインストールする

リポジトリで利用可能なPHPのバージョンを以下のコマンドにより検索してみました。
(コマンド実行日: 2023年6月15日)

 

どうやらリポジトリにあるバージョン以外のPHPは使えないようです。

(2023年6月15日時点)

Remiリポジトリからインストールする

ドキュメントによるとAmazon Linux 2023はFedoraやCentOSのコンポーネントで構成されていますが、
FedoraやCentOSのどちらでもなく、全く別のディストリビューションのようです。
RemiリポジトリのページにもあるようなCentOSへのインストール方法は、
Amazon Linux 2023ではEPELがそもそも使えないようなので無理そうです。
また、Fedora向けのdnfを使ったインストール方法もOSがFedoraであることを要求しているためか以下の様に失敗します。

 

ソースコードからビルドする

任意のバージョンのPHPをインストールするにはおそらくこの方法がよいでしょう。
PHPをビルドする時の流れは、
1. https://www.php.net/releases/などからソースコードを取得
2. 1で取得したものを解凍
3. 使いたい拡張モジュールに合わせて./configureをオプション付きで実行
4. make installを実行
となります。Dockerfileでは具体的には以下のようにします。

 

opensslモジュールを有効にする場合

opensslモジュールを使いたいときにはAmazon Linux 2023のリポジトリにあるものだとエラーが発生します。
以下のDockerfileはyum install でインストールするパッケージにopenssl-develを追加し、
./configureのオプションに–with-opensslを追加したものです。

 

こちらを実行すると、以下のエラーが発生します。

 

phpenvでインストールを行っても、./configureのオプションを適切に設定しない場合は同じエラーが発生します。
このエラーを回避するには、別のバージョンのopensslをソースからビルドして使います。

 

Apacheサーバーを使用し、libphp7.soモジュールやmod_ssl.soを使いたい場合

PHPをビルドするときの./configure実行時に–with-apxs2オプションを使います。
yumを使ってhttpdをインストールしただけだと、./configure実行時に

 

というエラーになるので、ソースからhttpdをビルドしてインストールしapxsへのパスを指定します。

 



❏❏ TOPIC ❏❏ ------------------------------------------------------------

カスタム自由!フリーECサイトパッケージ
チャットボット導入サービス
WEBシステム開発・スマホアプリ開発はSRIAへ