⚛️

Amazon Linux 2023 に PHP モジュール をインストール

に公開

Amazon Linux 2023 で PHP の拡張機能(モジュール)を追加し、設定情報を確認する方法を解説します。本記事では、以下の 2 つの方法を比較しながら、実際の手順を説明します。

dnf を使った公式モジュールのインストール
pecl を使った拡張モジュールのインストール

📦 レポジトリ(Repository)とは?

レポジトリとは、ソフトウェアパッケージを管理・提供する場所のことです。Linux のパッケージ管理システム(yumdnf)では、レポジトリを参照して必要なパッケージをダウンロード・インストールします。

Amazon Linux 2023 の公式リポジトリは Fedora や CentOS Stream をベースに独自管理されています。公式リポジトリ外のパッケージを取得するには Remi リポジトリの追加が有効ですが、Amazon Linux 2023 では 従来の Amazon Linux 2 で利用できた rpm ベースの方法が使えず、dnf config-manager を用いたリポジトリ登録が必要になります。

⚙️ PHP のインストール方法の比較

1️⃣ dnf を使用したインストール

  • 公式リポジトリから提供されるパッケージを利用
  • 依存関係の自動解決とシステム統合が可能
  • PHP 本体や主要な拡張モジュールのインストール向き

2️⃣ pecl を使用したインストール

  • PHP 拡張コミュニティ(PECL)から取得し、ソースビルドでインストール
  • 最新機能を利用できるが、依存関係は手動解決が必要

🐤 dnfpecl の比較表

項目 dnf PECL
提供元 公式リポジトリ PHP拡張コミュニティ(PECL)
用途 PHP 本体+主要拡張 PHP 拡張モジュールのみ
適用範囲 システム全体 PHP の拡張機能のみ
インストール方法 dnf install <モジュール名> pecl install <モジュール名>
インストール可能なモジュールの確認 dnf search <モジュール名> pecl search <モジュール名>
インストール確認 dnf list installed <モジュール名> pecl list installed <モジュール名>
設定ファイルの生成 /etc/php.d/ に自動作成 /etc/php.d/*.ini に手動で追加
アンインストール dnf remove <モジュール名> pecl uninstall <モジュール名> 後、関連する設定ファイルを削除

📌 その他 便利なコマンド

  • dnf でインストールするパッケージに含まれるファイル(ライブラリを含む)を表示
dnf repoquery -l <パッケージ名>

🛠️ PECL による拡張機能カスタムインストール

dnf install では /etc/php.d/ 配下に自動で .ini ファイルが作成されますが、pecl でインストールした拡張モジュールは手動設定が必要な場合があります。

📝 設定ファイルの作成例(sqlsrv 拡張モジュール)

# PECL で拡張をビルド&インストール
pecl install sqlsrv

# 設定ファイルを登録し、モジュールを有効化
echo "extension=sqlsrv.so" | sudo tee /etc/php.d/20-sqlsrv.ini

# PHP-FPM を再起動
sudo systemctl restart php-fpm

適用状況を確認するには以下を実行します。

php --ini | grep sqlsrv

このコマンドで /etc/php.d/20-sqlsrv.ini が表示されれば、正しく設定されています。

🔍 PHP 設定情報の確認

PHP の設定情報を確認するためによく使用される php -mphp -i コマンドを紹介します。

1️⃣ php -m

  • 目的:インストールされている PHP モジュール(拡張機能)の一覧を表示
  • 出力:簡潔なリスト形式
  • 用途:特定のモジュールが有効かどうかを素早く確認

php -m コマンドで出力される一覧には、PHP のコアモジュール、dnf でインストールされた拡張モジュール、および pecl でインストールされ、かつ .ini 設定ファイルで有効になっている拡張モジュールが含まれます。

特定のモジュール(例:sqlsrv)がインストールされているか確認するには grep を使用します。

php -m | grep -i sqlsrv

2️⃣ php -i

  • 目的:PHP の詳細な設定情報を表示
  • 出力:phpinfo() 関数と同等の詳細な情報
  • 用途:PHP の環境設定、コンパイルオプション、拡張モジュールの詳細情報などを確認

特定の情報を抽出したい場合は、grep コマンドと組み合わせて使用できます。

📌 よく使用される例

  1. 有効な拡張モジュールを確認する
php -i | grep extension_dir

拡張モジュールが保存されているディレクトリのパス(例:/usr/lib64/php8.3/modules/)を確認できます。

  1. タイムゾーン設定を確認する
php -i | grep "date.timezone"
  1. メモリ制限を確認する
php -i | grep "memory_limit"

🩵 おわりに

本記事では、Amazon Linux 2023 における PHP の拡張モジュールの追加方法と、確認方法について解説しました。

もしご指摘やアドバイスがありましたら、コメントいただけますと幸いです📝
えみり〜でした|ωΦ)ฅ

📜 参考リンク

🔗 PECL インストール入門
🔗 【 dnf 】コマンド(基礎編)――ソフトウェア(パッケージ)をインストールする
🔗 How do I compile PHP extensions on Amazon Linux 2023?
🔗 Amazon Linux 2023を触ってみて質問がありそうなことをまとめてみました。
🔗 Amazon Linux 2023 の初期設定が Amazon Linux 2 と違いすぎて戸惑ったので、その内容と対処方法のまとめ

Discussion