EC-CUBE さくらインターネット その3 商品カテゴリが表示されない

先日から実験的に行っていたさくらインターネットへのEC-CUBEのインストールは紆余曲折ありながら無事することが出来ました。

しかしながら、管理者画面からログインし、いざ商品登録を行うと困ったことが起きてしまいます。

商品登録時、入力項目の一つ、商品カテゴリが何度商品登録しても登録されないのです。
また、デフォルトで登録されている商品を商品変更した場合も、登録されていた商品カテゴリが消えてしまう困った現象が発生してします。

商品カテゴリがないと、お客様側ページの商品カテゴリ欄に表示されないため、よろしくありません。

ググって色々調べていると、どうやら同じような現象がいたるところで起きているようで、フォーラムなどでも解決策が記載されていたりします。
そんなわけで、わりと簡単に解決できると踏んでいた訳ですが、結局解決までに3日ぐらいを要してしまいました。

というのもこのバグ、解決方法がサーバの環境やec-cubeのバージョンによって違うようで、ネット上でも色々な解決方法が出ており、結局どれを試せばいいのかさっぱりな状態だった訳です。

ひとつの方法として、以下の方法があります。
さくらインターネットでは、サーバコントロールパネルからphp.iniの設定を変更できるため、ここから「magic_quotes_gpc = on」という設定を追加する方法です。
しかし、私の場合はこれでは直りませんでした。

つづいて、「magic_quotes_gpc = on」と記述したphp.iniファイルをテキストエディタで作成し、html/admin/products/ディレクトリ内にアップロードする方法を試しました。
しかし、これでもダメ

そして、原因となっているこのソース「LC_Page_Admin_Products_Product.php」をtracからダウンロードして入れ替えるというのもダメ

途方に暮れていたわけですが、最終的にEC-CUBEのフォーラムをじっくり読み原因を少し理解したところで、プログラムの修正を行いました。

———以下の内容————————

Re: 商品登録時に商品カテゴリ登録ができない
私も同じエラーがありましたが、なんとか解決しました。

/data/class/pages/admin/products/LC_Page_Admin_Products_Product.phpの424行目あたりです。

unserialize()されている値がありますが
本当は配列になって返されるのが正解のようです。

しかし、値の中に、¥マークが付いているので配列ではなく、
bool値が帰ってきてしまい、カテゴリが登録できない模様です。

よって、unserialize()の中の引数を、

unserialize(str_replace(“\\”,””,引数));
———————————————

これを参考に、同プログラムの現在のバージョンのプログラム439行目を以下のように修正してやると、見事に直りました。

~ unserialize(str_replace(“\\”,””,$arrList[‘categor ~ 

これで、ようやく、商品登録の際、商品カテゴリが登録できるようになったわけです。

昨日はこれで夜中の2時まで格闘しておりました。