xamppでEC-CUBE4.3インストール時のsodium拡張モジュールが有効になっていませんに対処。

久方ぶりにEC-CUBEの作業があり、ローカル環境(xampp)にEC-CUBE4.3をインストールしました。
ところが、見慣れないモジュールエラーが発生しました。

大半のモジュールエラーは、php.iniの拡張モジュールオプションを有効化すればいいのですが、今回はそれだけでは改善しませんでした。

少々手間取ったので、忘備録として記録いたします。

今回のxamppの環境

今回の検証には以下のxamppを使用しています。
php8.2が使えるバージョンです。

  • xampp windows版の8.2.12

現象はこのような感じです

sodium拡張モジュールとは

エラーが出たときにとりあえずググるのですが、今回の「sodiumモジュールエラー」は、無視してもそれなりにインストールできますというような記事がでてきました。

確かにsodium拡張モジュールエラーを無視してもEC-CUBEのインストールはできました。
ただ、気になるのでsodium拡張モジュールとは何なのか調べてみました。

sodium拡張モジュールは一言でいうと、「暗号化モジュール」でした。
暗号化キーを生成したり、文字列のエンコード・デコードなどを行う機能がありました。

参考:Sodium

要はセキュリティに関するサブルーチンライブラリです。
EC-CUBE本体には使われていないようですが、EC-CUBEのプラグインに使われていることがあります。
そのため、sodium拡張モジュールが未実装だとプラグインが正常動作しないケースがあります。

なんとなくですが、決済関係のプラグインで使われていそうです。
確かにカード決済プラグインならば、セキュリティは必須な感じがします。

いつものごとくphp.iniのオプションを設定しました

phpのモジュールが未実装の場合は、php.iniのコメント化されているモジュールを有効化すればたいてい解決します。事実、xamppのphp.iniにはsodiumのモジュールが内蔵されていました。

xamppを再起動してやってみたところモジュールエラーは改善せず

楽勝と思いつつ、xamppを再起動してEC-CUBE4.3のインストールをやってみたところ、sodiumモジュールエラーは消えませんでした。

なぜ?

と思いましたが、実は落とし穴がありました。

sodiumモジュールはhttpd-xampp.conf にも追記か記述が必要

php.iniを直しただけでは改善しなかった原因をぐぐって調べたところ、次のことをしなければいけないことがわかりました。

  • sodiumモジュールは、libsodium.dllを読み込みしないと動かない

phpのモジュール本体は、大抵のものは初めから読み込みされています。
なので、php.iniの拡張モジュールを有効にするだけで動作します。

ですがsodiumモジュールは、dllファイルをそもそも読み込んでいないので、自分で読み込みの記述を入れてやる必要があります。

sodiumモジュールの読み込みを記述する方法

モジュール読み込みは、httpd-xampp.confファイルに記述します。
xampp専用のconfファイルですが、http.confの拡張設定です。
要はxamppの都合上必要な設定を記述する設定ファイルです。

以下のようにlibsodium.dllの記述を追加すればOKです。

dllファイルのパスは、xamppのインストールされたドライブ、フォルダにより変わりますが、他のdllファイルとパスを合わせておけば大丈夫です。

libsodium.dllを読み込むようにしたらエラーが出なくなりました

httpd-xampp.confファイルにlibsodium.dllの読み込み記述をいれ、xamppを再起動したらec-cube4.3のsodium拡張モジュールエラーは出なくなりました。

sodiumエラーは無視してもインストールはできますが、後々不具合が出るかもしれないことを考えると、最初に対処しておくほうが無難です。

今回のレポートは以上です。
読んでいただいてありがとうございました。


ホームページに関するお悩み事やご相談事がございましたら私どもまでご連絡ください。 鋭意ご対応申し上げます。
ホームページのご提案もさせていただいております