7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

さくらのレンタルサーバにPHP-sodium 拡張を入れようと思ったらてこずった話(解決編)

Last updated at Posted at 2022-12-06

Laravelにて開発中のアプリケーションでJWTを使おうと思ったら、PHP-sodium が入ってないよって怒られた。

いまくいかなくて悩んでたら、@KCApps さんが助けてくれた話

さくらインターネットのレンタルサーバーにsodium拡張をインストールする方法

追記

CLIで ~/www/php.ini を読み込む設定を追加(Optional) がちゃんと働いていなかったので修正しました。

とりあえず結論

make じゃなくて gmake を使うとうまくいく

# 作業用ディレクトリの作成
mkdir -p {~/usr/local/src,~/usr/local/php/extension}

# libsodium のダウンロードとコンパイル
cd ~/usr/local/src
wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz
tar xzvf libsodium-1.0.18.tar.gz
cd libsodium-1.0.18
./configure --prefix=$HOME/usr/local
make && make check
make install

# PHP拡張のダウンロード&コンパイル
cd ~/usr/local/src
wget https://github.com/php/php-src/archive/php-8.0.23.zip
unzip php-8.0.23.zip
mv php-src-php-8.0.23/ext/sodium ./sodium-php-8.0.23
cd sodium-php-8.0.23
/usr/local/php/8.0/bin/phpize
./configure --with-php-config=/usr/local/php/8.0/bin/php-config --with-sodium PKG_CONFIG_PATH=$HOME/usr/local/lib/pkgconfig/ LDFLAGS=-L$HOME/usr/local/lib/
make
gmake test

# インストール
cp modules/sodium.so ~/usr/local/php/extension/
cat <<EOF >> $HOME/www/php.ini
extension=$HOME/usr/local/php/extension/sodium.so
EOF

# 確認
php -c ~/www/php.ini -m | grep sodium
# sodium と表示されればOK 

CLIで ~/www/php.ini を読み込む設定を追加(Optional)

cat <<EOF >> $HOME/.bash_profile
export PHP_INI_SCAN_DIR="$HOME/www/"
EOF

source ~/.bash_profile
php -m | grep sodium
# sodium と表示されればOK

Waht's sodium?

Sodium is a modern, easy-to-use software library for encryption, decryption, signatures, password hashing, and more.

Sodium は、暗号化、復号化、署名、パスワード ハッシュなどのための最新の使いやすいソフトウェア ライブラリです。

これをPHPで利用するための拡張が PHP-sodium だそうな。
具体的にはJWTで EdDSA signer に対応する際に導入されたらしい。

うごかすためには、レンタルサーバに Libsodium と PHP拡張のコンパイルが必要。
かつて intl を入れるときにやった手順と同じような感じでできるやろう。と気軽に考えていたらどん詰りました。
改めて見返すと、 intl のときも gmake 使ってました。思い込みダメゼッタイ。

# スペック確認
$ uname -a
FreeBSD www0000.sakura.ne.jp 11.2-RELEASE-p15 FreeBSD 11.2-RELEASE-p15
(中略)/usr/obj/home/pkg/src/sys/GENERIC  amd64

$ php -v
PHP 8.0.25 (cli) (built: Nov  8 2022 13:31:04) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.25, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.25, Copyright (c), by Zend Technologies

make と gmake

Ref: https://system.blog.uuum.jp/entry/make

make は歴史が長く、何度も rewrite されているので、様々な実装が存在します。基本的な処理は同じですが、実装によって処理が多少異なります。 主な実装は次の3つぐらいかなと思います。

  • System V make
  • BSD make
  • GNU make

System V の make は恐らくオリジナルの実装に一番近いんじゃないでしょうか。僕は使ったこともないので詳細はわかりません。 BSD系UNIXを使っている方は BSD make を使う機会が多いんじゃないかと思います。

最近のUNIX環境では、GNU make ほぼ一択じゃないでしょうか。機能的にも一番上だし、UNIX環境だとほぼ使えるし。

実装の違いにより、動作が変わってしまうのですね。
gmakeのほうがより一般的というか、環境に依存しない挙動が期待できるみたいなので、そちらを使用したほうが安定するみたいです。

Special thanks!

@KCApps @imagou

7
7
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?