【Amazon Linux 2023 地獄日記】PHP 8.2が入らない!?八方塞がりの迷路から生還した唯一の鍵
ちなみに、知人との共有メモですので参考にしないでね笑
どうもこんにちは。Amazon Linuxの迷宮に迷い込んだインフラエンジニア、またはただの被害者です。
今回は、Amazon Linux 2023(RHEL9ベース)にPHP 8.2を入れようとして壮絶に爆死した末路、「最初に 〇〇すればいいだけだった・・・」という話を、面白おかしく、涙をこらえつつ綴っていきます。
第一章:Amazon Linux 2023にPHPを入れようとしたら罠だった件
いつものごとく、Laravelでも動かそうかな〜と思って立ち上げた Amazon Linux 2023。
Fedora(Red Hat 9)ベースだし、dnfも使えるし、PHPぐらい秒で入るでしょ〜〜。
そんな軽い気持ちで放ったコマンドがこちら。
sudo dnf install php
・・・
php -v
PHP 8.4.xxはい、PHP 8.4 登場(バグ付き)
いやいやいや、誰も8.4なんて頼んでないんですよ。
「まだ出てよちよちの子を引っ張り出してきてんじゃないよ!?」
第二章:REMI?EPEL?そんなもの、もう無い。
「RHEL系ならREMI入れればいいんでしょ?昔からの知恵じゃん!」
意気揚々と以下を試す。
sudo dnf install epel-release↓
No match for argument: epel-release
Error: Unable to find a match: epel-releaseは?
そしてREMIリポジトリを手動で持ってこようとしても、
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm↓
エラー: このOSはサポートされてないよ〜(by remiちゃん)
Amazon Linux 2023、REMIにもEPELにも見捨てられた孤独な戦士であることが判明。
ここで一つ学びました。「Amazon Linux 2023、マジで孤高。」
第三章:SSL?Proxy?知ったことか!という無慈悲な壁
ではせめて手動でRPMダウンロードして……と思っていたのですが。
うちの会社、SSL通信はProxyを通さないとダメなのです。
が、Amazon Linux 2023くん、プロキシ越しのSSL接続にめちゃくちゃ弱い。
curl -O https://www.php.net/...↓
curl: (56) Received HTTP code 403 from proxy after CONNECTはい、死んだ。
export http_proxy とか https_proxy とかやっても、DNSが死んでる、証明書が死んでる、という デバフの嵐。
第四章:nginx先に入れたら後戻りできない呪いがかかる
「とりあえずnginxだけでも入れておくか」と思って軽率に以下を実行。
sudo dnf install nginxこれは問題なくインストール完了!
ここまでは良かった。
問題はこの後、PHPを入れようとしたときです。
sudo dnf install php82結果は──またもやPHP 8.4
しかも バージョン指定しても8.4しか候補が出てこない地獄構成。
第五章:最後の鍵、それは「最初にdnfでphp82を入れる」ことだった
途方に暮れて調べまくっていたら、ひっそりとAmazon Linux公式に「php82」という名前でパッケージが存在するという情報を発見。
その時、すべての点が繋がったのです。
「もしかして……最初に php82 を入れれば、全部うまくいくのでは……?」
✅ 勝利ルート:最初に PHP8.2 を入れる手順
以下の手順で、見事にPHP 8.2をインストール&動作確認できました!
インストール(必須モジュール付き)
sudo dnf install php82 php82-php php82-php-fpm php82-php-mysqlnd php82-php-mbstring php82-php-xml php82-php-cliバージョン確認
php -v
PHP 8.2.xx出ました!PHP 8.2!
この状態であれば、LaravelもWordPressも問題なし!
FPMで nginx とも連携できます。
第六章:nginxとの連携もバッチリ(サンプル設定)
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}ディレクトリパスは自分の環境に合わせてね〜
そして /usr/share/nginx/html/index.php にこれを書いて:
<?php phpinfo(); ?>ブラウザでアクセスすると・・・感動のphpinfoページとご対面です!👏
結論:Amazon Linux 2023は優しい顔してめちゃくちゃクセ強い
• dnfでPHPを入れたい? → 先に php82 をインストールせよ
• REMIもEPELもない? → そう、君はひとりだ。
• nginxを先に入れた? → ご愁傷様。PHP8.4の世界へようこそ。
• Proxy経由でSSL繋がらない? → curlもwgetも全滅!
まとめ
問題 回避策
REMI / EPEL 入らない 最初から諦める
dnf install php82を明示して一番最初に入れる
Proxy越しSSL死ぬ dnf優先。外でRPMダウンロードして持ってこい
nginx先に入れた リビルド or PHP強制ダウングレード地獄
この経験から得た教訓はただひとつ。
「Amazon Linux 2023でPHPを使いたければ、最初に dnf install php82 をしろ」
──以上、Amazon Linux 2023サバイバル記でした!


コメント