【EC-CUBE4系】Notice: unserialize(): Error at offset が出る.

EC-CUBE4.0.2以下のバージョンをデバッグモードで開発していて、
Notice: unserialize(): Error at offset が発生して困った。

デバッグモードでなければ特に問題は出ないので、
放っておいても良いのですが、開発効率が悪いため、
何とかしたいと考えるエンジニアの方もいるのではないでしょうか。
今回はその解決方法を紹介させて頂こうと思います。

ポイントは、PHPのバージョンです。
7.3系になっていればこのまま読み進めてください。

7.3系ではオブジェクトのserialize/unserializeのルールが厳格化されており、
配列やJSON形式で扱わないといけないようになりました。
しかし、EC-CUBEの4.0.2以下のバージョンでは、プラグインに関するデータを
オブジェクトでそのままserializeしようとしている箇所があります。
その箇所を配列などに変換してあげれば、解決します。

変更箇所は以下を参考にしてみてください。
https://github.com/EC-CUBE/ec-cube/pull/4219/commits/76a46253f8379f1954dd7aa9f01851d2efbb79be

意外と気づきにくく、発見が難しいところでもあると思うので、
これを参考にサクッと直して頂ければ幸いです。

ABOUTこの記事をかいた人

フリーランスとして働く、フルスタックエンジニア 初崎 匠のサイト。仕事のことから趣味のアニメーション制作、英語学習など、様々なことを通じて、少しでも多くの人が幸せになれるような価値を提供できるよう挑戦し続けます。