XAMPPでのEC-CUBE4の管理画面でのシステムエラーに対処
先週EC-CUBE4のシステムエラーについて記載しましたが、今週もEC-CUBE4のシステムエラーについてです。
ただ、先週とは現象のことなるシステムエラーです。
また特定時のみに発生するシステムエラーで、それ以外の状態では特に問題なく動作しています。
なんとも不可思議な現象ですが、調査して対処できましたので忘備録として記録いたします。
現象はこのような感じです。
何の気なしに会員一覧を表示したのですが、システムエラーになりました。
ただし、それ以外の画面ではエラーは発生せず普通に動作しています。
先週は全システムエラーでしたが、今回は部分システムエラーです。
この段階では、原因の検討がつかずさっぱりでした。
ということで、今回もまずログを調べてみました。
ログを調べると「The Swiftmailer URL \”smtp://」と書かれていました。
EC-CUBE4のログ「/var/log/prod/フォルダ」のログを調べてみると、
The Swiftmailer URL \”smtp:// ~
と記載されていました。
推測するに、メール送信時のエラーのようです。
EC-CUBE4では、xamppであってもsendmailを使わずにメール送信できます。
なのでローカル環境でも商品購入テスト時のメール送信テストができます。
今回もメール設定をしています。
どうやらその部分に何か問題が発生しているようでした。
でも疑問がわきました。
以前からxamppでもメール設定ができていたのに、なんで今回だけエラーなのでしょう?
もしかしてec-cube4のバージョンや、phpのバージョンが関連しているのでは?
とも思いましたが、原因は思ったより単純なことでした。
原因はメールのパスワードに「/(スラッシュ)」が含まれていたため誤動作していました
ec-cube4ではメールの設定をそのまま記述します。
具体的には使用するメールのIDパスワードを記述します。
今回テストで使用したメールに設定していたパスワードに、たまたまですが「/(スラッシュ)」が含まれていました。
どうやらこれが文節の区切りと解釈されて、設定の桁ずれが起こっていたようです。
事実、メールのパスワードを記号なしで再設定しテストしてみたところ、現象が発生しなくなりました。
こんなこともあるのかという現象でした。
PHPで/(スラッシュ)など記号は特殊な意味があります
PHPでは記号文字は様々な用途があります。
今回はパスワードに設定された記号文字がPHP上で動作してしまったことでシステムエラーが発生していました。
通常であればパスワードなどは「””ダブルコーテーション」で囲み、誤動作しないようにします。
しかし、EC-CUBE4でのメール設定にはダブルコーテーションを指定しない記述方式のため、誤動作につながったようです。
今のところの対処方法は、メールパスワードに記号文字を使用しないことで回避できます。
今回もよい経験をいたしました。