Coding PHP sodium

パソコンカタカタ忘却録です。
Xserverのレンタルサーバにphp拡張のsodiumを入れようとした話。
手動でECCUBE4.3を入れたときはsodiumのエラーをスルーして使うことができたんですが
簡易インストールを使った場合プラグインインストールの時点でエラーが出るので解消しようとやってみました。

コマンドを打つ前にまずMacのメインで使用するのユーザを変更したのでSSHの秘密鍵を移動するところから。

■Macの秘密鍵をメインユーザに移動

▼.sshフォルダに移動
Finderを開く
移動メニューから「フォルダへ移動」を選択
Finderのメニューから「移動」をクリックし、「フォルダへ移動…」を選ぶ
「フォルダへ移動」ウィンドウが開いたら、次のパスを入力してEnterキーを押す
~/.ssh
隠しフォルダの中から該当の秘密鍵をみつけてコピーして
メインユーザのFinderの.sshに移す
パーミッションの変更
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/秘密鍵のファイル
サーバにログイン
$ ssh -i ~/.ssh/秘密鍵のファイル -p 10022 ホスト名.xserver.jp -l サーバ名

■phpの確認

▼PHPのバージョン確認
$ php -v
PHP 8.1.29 (cli) (built: Jul 16 2024 09:06:18) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.29, Copyright (c) Zend Technologies
▼管理画面から8.2にしたけどコマンドで確認したら違かったので変更
$ vi .bash_profile
viで編集入って下記の部分変更
export PATH=/opt/php-8.2.22/bin:$PATH
$ source ~/.bash_profile

$ php -v
PHP 8.2.22 (cli) (built: Aug  5 2024 10:25:13) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.22, Copyright (c) Zend Technologies
▼phpizeの場所確認
$ find /opt/php-8.2.22 -name phpize
/opt/php-8.2.22/bin/phpize
▼php-configの場所確認
$ ls /opt/php-8.2.22/bin | grep php-config
php-config

■ libsodium のダウンロードとコンパイル

▼作業用ディレクトリの作成
$ mkdir -p {~/usr/local/src,~/usr/local/php/extension}
上記コマンドで /usr/local/src と、/usr/local/php/extension を一緒に生成
本当ならここで下記コマンドでダウンロードをやりたいところなんですが、
$ cd ~/usr/local/src
$ wget https://github.com/php/php-src/archive/php-8.3.8.zip

ありえんエラーが頻出してwgetもcurlもダメだったので該当ディレクトリに手動でアップしました。
上記URLからダウンロード→/usr/local/src にアップロード
▼解凍
$ cd ~/usr/local/src
$ tar xzvf libsodium-1.0.20.tar.gz
$ cd libsodium-1.0.20
$ ./configure –prefix=$HOME/usr/local
$ make

$ make check
$ make install

■ sodiumのダウンロードとコンパイル

$ cd ~/usr/local/src
▼ダウンロード
$ wget https://github.com/php/php-src/archive/php–8.2.22.zip
(このwgetは普通に通ったのでコマンドで)
▼解凍
$ unzip php–8.2.22.zip
$ mv php-src-php-8.2.22/ext/sodium ./sodium-php-8.2.22

$ cd sodium-php-8.2.22
$ opt/php-8.2.22/bin/phpize
Configuring for:
PHP Api Version: 20220829
Zend Module Api No: 20220829
Zend Extension Api No: 420220829
$ ./configure –with-php-config=/usr/local/php/8.2/bin/php-config –with-sodium PKG_CONFIG_PATH=$HOME/usr/local/lib/pkgconfig/ LDFLAGS=-L$HOME/usr/local/lib/
※/usr/local/src/libsodium-1.0.20/libsodium.pcにあるが、
$HOME/usr/local/lib/pkgconfig←これで良くなる
$ make
$ make test

■ php.iniに記述(CLIでsodiumを有効化)

php.iniにsodium記述して確認して終わりなはずなんですがここで大分詰みました。
久しぶりに朝までパソコンカタカタしてました。
まずドメインのディレクトリにあるphp.iniに書いても反映されない。
結果的にドメインディレクトリに.user.iniを作成してそこに絶対パスでsodiumを書いたら反映されました。
ドメインディレクトリに.user.iniのファイルを作成
▼上記ファイルに絶対パスでsodiumを記載
extension=/home/サーバ名/usr/local/php/extension/sodium.so

各反映を確認
$ which php
/opt/php-8.2.22/bin/php
phpinfo.php
PHP Version | 8.2.22
Sodium | Frank Denis
Loaded Configuration File | /etc/php-fpm/php82-php.ini
$ php -m | grep sodium
sodium
$ env php -m | grep sodium
sodium

それでもプラグインインストールにcomposerエラーが出たのでcomposer各項目確認
$ composer -vvv about | grep -i php
Running 1.10.22 (2021-04-27 13:10:45) with PHP 8.2.22 on Linux / 5.4.0-205-generic
$ which composer
/usr/bin/composer
$ head -n 1 $(which composer)
!/usr/bin/env php
composer.jsonの確認
“config”: {
 ”platform”: {
  ”php”: “8.2.22”
 }
}

反映確認も項目確認も問題なくphp8.2だったのですがインストールエラーが出続けました。
結果的にWeb APIのプラグインが有効化されてないのでAPI関係のエラーが出続けていたようで、
有効化したら問題なくインストールができました。
今のところまだテスト環境なので詳しい動作について問題があるかは分かっていません。
一応問題なく動いているようなのでこれで一旦構築します。

▼参考リンク:

さくらのレンタルサーバにPHP-sodium 拡張を入れようと思ったらてこずった話(解決編) - Qiita
Laravelにて開発中のアプリケーションでJWTを使おうと思ったら、PHP-sodium が入ってないよって怒られた。 いまくいかなくて悩んでたら、@KCApps さんが助けてくれた話 さくらインターネットのレンタルサーバーにsodium...

LillianOtto Designer BLOG