AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

AmazonLinux2023 に PHP 環境を用意する

公式ナレッジベース

docs.aws.amazon.com

[ec2-user ~]$ sudo dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel

公式だと上記のようになっているんだけど、実際に収録されているパッケージを確認すると、 php8.1-* php8.2-* という感じのプレフィクスが付与されている。

なので、実質 php8.1, php8.2 から選択制になる。 デフォルトは 8.1。

aws.massie0414.com

LAMPPHP 処理系だけいれるなら以下。

PHP 8.1
[ec2-user ~]$ sudo dnf install -y httpd wget php8.1-fpm php8.1-mysqli php8.1-json php8.1 php8.1-devel
PHP 8.2
[ec2-user ~]$ sudo dnf install -y httpd wget php8.2-fpm php8.2-mysqli php8.2-json php8.2 php8.2-devel

サポートバージョンの問題

https://github.com/amazonlinux/amazon-linux-2023/issues/573#issuecomment-1979881124

8.1 is out of active support, has security support until Nov 2024. 8.2 has active support until Dec 2024, security support until Dec 2025. 8.3 has active support until Nov 2025, and security support until Nov 2026.

8.1 はアクティブ サポートが終了し、2024 年 11 月までセキュリティ サポートが提供されます。 8.2 のアクティブ サポートは 2024 年 12 月まで、セキュリティ サポートは 2025 年 12 月までです。 8.3 のアクティブ サポートは 2025 年 11 月まで、セキュリティ サポートは 2026 年 11 月までです。

手動でビルドすりゃええんやんけ! といっている人がいるが、以下の様な具体的な反論が出ている。

https://github.com/amazonlinux/amazon-linux-2023/issues/573#issuecomment-2002632003

Example: staying with PHP 8.2, xdebug as an example you can't install it directly from the dnf packages you must compile it using php-pear which is make the build process longer and you consume more resources comparing to directly install it from the packages manager. If you check how many package request issues are open you will understand how poor is this AL2023 distro in my opinion tbh.

AWS 様が厳選したパッケージ郡だから、ビルドに必要なパッケージが足りねえんだわ」

ということらしい。 はえー……コンテナにしろってことですかね? (しろめ

Nix

全然知らなかったんだけど、 Nix というパッケージマネージャを使えば PHP に関してはなんとかなるらしい。

Steps:

Install Nix: curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
Use PHP83: nix shell nixpkgs#php83

github.com

Nix とは

全然しらなかったんだけど、日本語で解説を書いてくれている人がいた。

qiita.com

php モジュール足りない問題

php8.2 には php-zip が存在するけど、 php8.1 には php-zip が存在しないという謎の……なんだそれ!?

一応回避する workaround が共有されているけど pecl からもってこい、とのことで「うん、うん……?」という感じ。 共有してくれた兄貴には感謝しかないけどこれ Amazon 側の保守チームの考えがよくわかねえ。

github.com