ZencartのPHP5.4以上への対応

夏ですね!Yu-ichiですneko.gif

いつの間にか梅雨明けしてましたね。w01.gif
今年の梅雨は梅雨らしくない梅雨だった・・・。(「梅雨b-ame.gif」言い過ぎ

今回は、Zencart1.3系でPHP5.3以前から5.4以上にアップした環境で不具合がでるお話です。
ZencartでもUTF-8版は問題ないのですが、EUC版でPHP5.3→5.4以上になった際に、日本語がうまく処理できず商品を登録しても商品名が空欄になってしまったりします。

これは使用している「htmlspecialchars関数」が原因でした。cat_5.gif
htmlspecialchars関数とは、特殊文字をHTMLエンティティに変換する関数で、
 htmlspecialchars(文字列,変換スタイル,文字コード)
という構造になっています。emoji482.gif

このうち、第2引数の「変換スタイル」と第3引数の「文字コード」は省略可能なため、
今回のZencartでは省略した形で記述されていました。emoji205.gif
この「文字コード」の部分を省略したときに、PHP5.3以前とPHP5.4以降のデフォルトの文字コードが異なっていた為に、商品登録がうまくいかなかったりします。ga-n01.gif

ちなみに、省略した時の文字コードですが
 PHP5.3まで・・・ISO-8859-1
 PHP5.4以降・・・UTF-8
となります。

そこで、今回は省略してあった第3引数を記述することで解決しました。w01.gif
(90ヶ所くらい変更したかな・・・body_deject.gif

省略可能なものでも、しっかり書いておかないと仕様変更等でデフォルト値が変わった場合に、すごく面倒なことになるので、気を付けましょう!neko.gif

トラックバックURL