この記事では、Amazon Linux 2023環境でPHP Sodium拡張をインストールする方法を詳しく解説します。PHP 8.2環境を前提としていますが、他のバージョンでも同様の手順でインストール可能です。
環境
$ nginx -v
nginx version: nginx/1.24.0
$ php -v
PHP 8.2.7 (cli) (built: Jun 6 2023 21:28:56) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies
$ php-fpm -v
PHP 8.2.7 (fpm-fcgi) (built: Jun 6 2023 21:28:56)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies
1. 背景
PHPアプリケーションを使用する際、sodium拡張が必要になることがあります。Amazon Linux 2023ではデフォルトでsodium拡張がインストールされていないため、自分でビルドしてインストールする必要があります。
2. 必要なツールのインストール
libsodiumをビルドするために、開発ツールや必要なライブラリをインストールします。
sudo dnf groupinstall "Development Tools"
sudo dnf install php-devel wget tar
- Development Tools: ビルドツール全般(gccやmakeなど)が含まれます。
- php-devel: PHPの開発用ライブラリです。PHP拡張をビルドする際に必要です。
3. Sodiumライブラリのダウンロードとインストール
次に、libsodiumのソースコードをダウンロードしてビルドします。
sudo wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz
sudo tar -xvzf libsodium-1.0.18.tar.gz
sudo make && sudo make install
make install が完了すると、libsodiumライブラリが/usr/local/libにインストールされます。
4. ライブラリのパスを更新
ldconfigを使って、ライブラリのパスをキャッシュに登録します。
5. PHP Sodium拡張のビルド
PHPソースコード内のsodium拡張モジュールをビルドします。
cd ~/php-8.2.7/ext/sodium
sudo ./configure LIBSODIUM_CFLAGS="-I/usr/local/include" LIBSODIUM_LIBS="-L/usr/local/lib -lsodium"
インストールが完了すると、sodium.soが/usr/local/src/ディレクトリに配置されます。
6. PHPにSodium拡張を有効化
PHPでsodium拡張を読み込む設定を行います。
echo "extension=sodium" | sudo tee /etc/php.d/20-sodium.ini
7. PHP-FPMとNginxを再起動
設定が反映されるように、PHP-FPMとNginxを再起動します。
sudo systemctl restart php-fpm
sudo systemctl restart nginx
8. インストール確認
PHPがsodium拡張を認識しているか確認します。
php -m | grep sodium
sodium
• sodiumが表示されればインストール成功です。
トラブルシューティング
pkg-configがlibsodiumを見つけられない場合
configureで以下のエラーが出る場合、pkg-configがsodiumを見つけられていません。
Package 'libsodium', required by 'virtual:world', not found
対処方法
1. libsodium.pcが存在するか確認します。
find /usr/local/lib /usr/lib /usr/lib64 -name "libsodium.pc"
2. 見つかった場合は以下を実行してPKG_CONFIG_PATHを設定します。
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
echo 'export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig' >> ~/.bashrc
3. それでも解決しない場合は、環境変数を直接渡します。
sudo ./configure LIBSODIUM_CFLAGS="-I/usr/local/include" LIBSODIUM_LIBS="-L/usr/local/lib -lsodium"
まとめ
- Amazon Linux 2023ではphp-sodiumがデフォルトで提供されていないため、自分でlibsodiumをソースからビルドする必要があります。
- makeとmake installでlibsodiumをインストールした後、PHPのext/sodiumモジュールをビルドして拡張として組み込みます。
- 最後にPHP-FPMとNginxを再起動し、PHPがsodiumを認識しているか確認してください。