先日、EC-CUBEを設置して一通りテスト&設定してデザイナーさんに環境を渡したのですが、なにやらサムネイル画像がよそのサイトでは出ているのに表示されないのは、カスタマイズしてないから?って疑問が。

そんなバカなと確認してみたところ、確かにカートに入れたリストに小さなサムネイル画像が表示されるべきところ、テキストで商品名が表示されている。こんなところカスタマイズした記憶ないけどなぜ?とFirefox+Firebugで問題の箇所を確認したところ、ちゃんとimgタグが入っていて、「resize_image.php」に画像ファイル名と縦横のサイズのパラメータがくっついている。Firebugはこのソース上のURLにマウスオーバーすれば画像が表示されるのだが・・表示されない。明らかに問題ありだ。

当該PHPファイルがrequire_onceしているファイルを順繰りに見ていくのだが、クラスを生成していたりでファイルが別のファイルを流用していて、それが何段にもなっていて、本当に素人には非常に解読が難しい。

でも最終的にはphpのGDを使ってサムネイルを表示させるオープンソースのスクリプトのモジュールに行き着いた。苦手ながらPHPの流れを追いかけていくと、ここにちゃんとパラメータを渡せば表示されるはずだという結論に至った。肝心のGDは、phpinfoで確認してもちゃんとPHPの機能として認識されている。

ってことはこのGDを使ってサムネイルを表示させるモジュールにパラメータが引き渡されていないって事になるんじゃないか?となるとhtml公開域と、data非公開域の相対位置を書いたファイルが怪しいと真っ先に思った。でなければ説明がつかない。具体的には「define.php」だ。プログラマーさんの余裕のある時に質問してみようっと。餅は餅屋って言うし。

でも記述している内容には何度も確認したが間違いは無い。どうしたもんかなと片っ端からチェックしているとふと 文字コードの違いに気づいた。UTF8だとばかり思っていたのだが、殆どがSJISなのだ。そして肝心の「define.php」はUTF-8であった。もしかしてこれ?と半信半疑でエディタから文字コードをSJISに変更してみた。

うごいた・・・サムネイル表示出た。
たったこれだけ?
こんなにPHPってもろいのか?

うーん、でもUTF-8でも動いてる環境があったりする。そもそもこのファイルでdataフォルダとhtmlフォルダの相対関係位置がズレるとEC-CUBEがCMSとして機能しなくなるはずなのに、なぜ「resize_image.php」だけが不具合を起こしたのか?・・・・さっぱりこ分からん。本当は文字コードが原因って訳ではないんじゃないか?

とにかく頑張ってPHPソース追いかけたのに原因は環境設定ファイルの文字コード強制変更で解決とは・・・ドッと疲れた。現実はこんなもんか?プログラマーさんに余裕がある時に質問してみようっと。餅は餅屋だって言うし。