XAMPPでのEC-CUBE4の管理画面でのシステムエラーに対処

先週について記載しましたが、今週もEC-CUBE4のシステムエラーについてです。
ただ、先週とは現象のことなるシステムエラーです。

また特定時のみに発生するシステムエラーで、それ以外の状態では特に問題なく動作しています。
なんとも不可思議な現象ですが、調査して対処できましたので忘備録として記録いたします。

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

何の気なしに会員一覧を表示したのですが、システムエラーになりました。
ただし、それ以外の画面ではエラーは発生せず普通に動作しています。

先週は全システムエラーでしたが、今回は部分システムエラーです。
この段階では、原因の検討がつかずさっぱりでした。

ということで、今回もまずログを調べてみました。

ログを調べると「The Swiftmailer URL \”smtp://」と書かれていました。

EC-CUBE4のログ「/var/log/prod/フォルダ」のログを調べてみると、
The Swiftmailer URL \”smtp:// ~

と記載されていました。

推測するに、メール送信時のエラーのようです。
EC-CUBE4では、であってもsendmailを使わずにメール送信できます。
なのでローカル環境でも商品購入テスト時のメール送信テストができます。

今回もメール設定をしています。
どうやらその部分に何か問題が発生しているようでした。

でも疑問がわきました。
以前からxamppでもメール設定ができていたのに、なんで今回だけエラーなのでしょう?

もしかしてec-cube4のバージョンや、phpのバージョンが関連しているのでは?
とも思いましたが、原因は思ったより単純なことでした。

原因はメールのパスワードに「/(スラッシュ)」が含まれていたため誤動作していました

ec-cube4ではメールの設定をそのまま記述します。
具体的には使用するメールのIDパスワードを記述します。

今回テストで使用したメールに設定していたパスワードに、たまたまですが「/(スラッシュ)」が含まれていました。

どうやらこれが文節の区切りと解釈されて、設定の桁ずれが起こっていたようです。
事実、メールのパスワードを記号なしで再設定しテストしてみたところ、現象が発生しなくなりました。

こんなこともあるのかという現象でした。

PHPで/(スラッシュ)など記号は特殊な意味があります

PHPでは記号文字は様々な用途があります。
今回はパスワードに設定された記号文字がPHP上で動作してしまったことでシステムエラーが発生していました。

通常であればパスワードなどは「””ダブルコーテーション」で囲み、誤動作しないようにします。
しかし、EC-CUBE4でのメール設定にはダブルコーテーションを指定しない記述方式のため、誤動作につながったようです。

今のところの対処方法は、メールパスワードに記号文字を使用しないことで回避できます。
今回もよい経験をいたしました。

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


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