xamppでのEC-CUBE4でシステムエラーが出た現象に対処
サーバーに独自でカートを設置するならば、EC-CUBEが便利です。
ワードプレスのようにプラグインも充実しており、使い勝手のよいカートです。
XAMPP上で動作するため、テンプレート構築作業をローカル環境でやりやすいのも特徴です。
ところが今回、XAMPP上でのEC-CUBE4が「システムエラー」となり動かなくなりました。
ググっても答えが見いだせず苦労しましたが、いろいろ調査して対処できましたので、忘備録として記録いたします。
現象はこのような感じです。
発生したらあせる感じのシステムエラーが表示されました。
php文法エラー等の要因であれば、画面にエラーコードが表示されます。
しかし「システムエラー」だけでは、何が原因なのかわかりません。
ここで途方にくれました。
原因がわからない場合はEC-CUBEのログを見ます。
ググっても原因がよくわからないので、EC-CUBEのログを見ることにしました。
管理画面からも見れますが、「/var/log/proid/」フォルダにテキスト形式でログが保存されています。
admin-、front-、site-、3種類のログが日付順に並んでいます。
とりあえずひとつづつチェックし、「システムエラー」の文字で検索してみました。
すると、ヒットする部分がありました。
それがこちらです。
エラーの原因は「openssl」が呼び出せないエラー
ログの原因部分に、「Attempted to call function openssl_random_pseudo_byte」と記載されていました。
「Attempted to call function」とは、関数を呼び出そうとしてエラーにになった場合に発生するエラーのことです。
つまり、その関数にエラーがあるか、関数そのものが存在していない場合に発生します。
ここで閃きました。
opensslを有効化する必要があるのだと。
xamppのopensslを有効化する方法
opensslとはSSLのことです。ただ私はxamppはローカル環境でテストするだけなので、特に何も気にせず設定もしていませんでした。
だから、「openssl関連の関数が無い」というエラーがでていました。
EC-CUBE4はどうやらopenssl関連の関数を使っているようです。
opensslの有効化は簡単で、xamppでphp.iniを開き「php_open_ssl.dll」のコメントを外せばOKです。
(1)xamppでphp.iniを開く
Configボタンを押すと、各種設定ファイル一覧が表示されます。
その中からphp.iniを選びクリックします。
(2)php_open_ssl.dllのコメントを外してphp.iniを上書き保存する
open_ssl有効化の手順
- php.iniを、「php_openssl.dll」で検索します。
- ヒットしたところが、コメント化されているのでコメントを外し上書き保存します。
- xamppを再起動します。
無事EC-CUBE4のシステムエラーが発生しなくなりました。
今回の原因はopen_sslが無効状態であったことでした。
通常のレンタルサーバーであれば、open_sslは有効化されているでしょうから、主にxamppで発生するエラーといえます。
エラーは原因がわかれば対処できます。
エラーの原因がわからない場合はログを調べます。
ということを学んだ事例でした。
本記事がお役に立てば幸いです。