だ。ログ。

開発とかスノボとかやきうとか。

EC-CUBEで人に依存した文字列の文字化けを解消する

テストをしていて、ある人から文字化けしてしまい文字列が数値文字参照になってしまっている。と言う指摘が有るので調査。
スマホやPCではなく人に依存した文字化けで、同一の環境を容易しても数値文字参照になってしまっている人とそうでない人が発生している。

文字コードやシステム側に悪そうな所は見つからない。
強いて言えば、エラーが出てしまっている部分がjsのプルダウンをクリックした際のダイアログで気付いたとの事。
ソースを見ると全部の2バイト文字が数値参照になってしまっているのが引っ掛かる。

結果として、参照しているセッションのファイルが壊れていること。
ちゃんとした調査はしていないものの、サーバーの負荷を測る為に自分がABコマンドを使いサーバーに過度な負荷を掛けている裏で
テストをしてもらっていた人がEC-CUBEにアクセスした際にエラーとしてログに書き込まれた

/app/log/front_site_yyyy-mm-dd.log

[ShoppingController:index:xxx] - カートが存在しません   [GET, /shopping, 1.2.3.4, https://hogehoge.com/cart, Mozilla/5.0 (Linux; Android 7.1.2; Nexus 5X Build/N2G48C)

上記の「カートが存在しません」
と言う部分に注視、カーネル部分まで確認しているワケではないのであくまでも自分の予測だが
1. EC-CUBEにアクセスする
2. カートセッションをサーバーに作成する
3. 作成したセッションをアクセスしたブラウザに保存する
4. ページが表示される

と言う流れでカートが作成されるが、この2が出来上がる前にカートに商品を入れてしまい、結果としてカートだけではなく全てのセッションとキャッシュが中途半端に出来上がった状態のままでアクセスした人にキャッシュが紐付いてしまい、結果エラーが起きたのではないかと推測。
/app/cache/ 内のファイルを全削除し、もう一度テストしてもらうと数値文字参照は回避され、2バイト文字が正しく表示されている事を確認。

多分安いレンタルサーバー等のレスポンスの遅いサーバーを使っているとこの問題は顕著に出てくる気がする。