この記事では、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のソースコードをダウンロードしてビルドします。

cd /usr/local/src
sudo wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz
sudo tar -xvzf libsodium-1.0.18.tar.gz
cd libsodium-1.0.18
sudo ./configure
sudo make && sudo make install

make install が完了すると、libsodiumライブラリが/usr/local/libにインストールされます。

4. ライブラリのパスを更新

ldconfigを使って、ライブラリのパスをキャッシュに登録します。

sudo 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"
sudo make
sudo make install

インストールが完了すると、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
source ~/.bashrc
sudo ldconfig

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を認識しているか確認してください。