システム屋日誌

情報システム構築、開発手法を中心に気が付いたことを書き留めます。ちいさなことから、おおきなことまで。もちろん、どうでもいいことも。。。
<< June 2017 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 >>
 
RECENT COMMENT
RECENT TRACKBACK
れいねっとHP
http://www.rey-net.com
MOBILE
qrcode
PROFILE
無料ブログ作成サービス JUGEM
 
EC-CUBEのバグ
最近は、オープンソースソフトウェアを使って色々と実験しています。
オープンソースを使えば、今までのゼロからの開発とは違った
業務モデルを作る事ができるので、小さな会社のために
このモデルを確立していきたいと考えています。

さて、本題。
オープンソースのショッピングカート、EC-CUBE を使って見たのですが
まだろくにサイトのデータを作りこんでいない段階で以下のようなエラーが出ました。
 
Warning: Invalid argument supplied for foreach() in /xxxxxxx/data/class/helper/SC_Helper_DB.php on line 928

(1)商品カテゴリを作る。
(2)上記カテゴリに商品を登録する。

ここで、エラーが発生。
ま、ワーニングだからいいかな、と思ったら。
公開画面で商品カテゴリが1つも表示されない。

ソースコードを解析したら、SC_Helper_DB.php の updateProductCategories()
という関数の引数 $arrCategory_id(POST変数)に指定したカテゴリIDが全く
入っていませんでした。

ネットで調べたりして検討した結果、とりあえずは の magic_quotes_gpc
設定を変えるのが一番早い解決方法だと判断。

ホスティング(チカッパ)のコントロールパネルで magic_quotes_gpc を OFF
に設定(元々は ON)

magic_quotes_gpc は、フォームに制御文字が書かれた場合、
その文字がサーバ内に取り込まれたときに安全に処理するためのパラメータです。
OFF にすると、安全装置(エスケープ処理)が無くなるということです。

php.ini の設定はホスティング全体に影響する内容ですから
EC-CUBE 以外のアプリケーションに影響する可能性があります。

真の解決策は、上記クラス関数に制御文字を含まない POST 変数を渡す
ように、ソースを修整することです。
(いつか、やんなくちゃ)

有償版では、パッチが出ているそうなのですが。
これは、とっても分かりやすいバグなので、できればオープンにしたコードにも
反映して欲しいところです。それでは、ビジネスにならないかもしれませんが・・・


コメント
コメントする









 
トラックバック
この記事のトラックバックURL
http://technology.rey-net.com/trackback/1155850