[Tep-j-general] adminセクションで画像が表示されない

Back to archive index

Mineaki Gotoh gij****@peak*****
2002年 11月 6日 (水) 17:33:02 JST


こんにちは、後藤です。

osCommerceのWSやFSがらみでは、一応、一番苦労している人間だと自負して
います(笑)。逆にその分、osCommerceのオリジナルバグであるWSやFSの誤
用をあちこち修正してしまっているので、もしかしたら、私のアドバイスだ
とうまくいかないかもしれません。


> /home/shop/html/ が、http://www.xxxxx.com/~shop/ に相当します。

これが最初に書いてあれば、話は簡単でしたね。(でも、hamadaさんはちゃ
んとその可能性を示唆していますし、私の勘が鈍いだけかもしれませんが)


ユーザーモードの場合は、HTTP_*SERVER の方で記述します。

catalog/includes/configure.php
admin/includes/configure.php

ともに、

   define('HTTP_SERVER', 'http://www.xxxxx.com/~shop');
   define('HTTP_CATALOG_SERVER', 'http://www.xxxxx.com/~shop');

です。(HTTPS* も同様)

> ちなみに define('DIR_WS_CATALOG', '../catalog/'); は
> 最初に試してみてるんですが、(^^;ヾ
> /home/shop/html../catalog/images/ になっていました。

ああ、そうでしたね。HTTP_CATALOG_SERVERで/~以下を指定した上で、
'/../catalog/'で相対アクセス可能です。


……と、ここまで書いてようやく気づきました。

やっぱり、osCommerceのオリジナルバグ(とまでは言い過ぎかもしれませ
んが…)が原因ですね。

以前、TEP-Jで、DIR_FS_CATALOG_IMAGES とするところを、
DIR_FS_DOCUMENT_ROOT . DIR_WS_CATALOG_IMAGES と表記してあるのはまずい
だろう、という指摘をしたのですが、それとほとんど同じことが、
DIR_WS_CATALOG_IMAGES にもあったのです。(私の管理しているソースでは
とっくに修正してありましたが、田村さんのソースを見る限りそのままなの
で、報告もれのようです)

DIR_WS_CATALOG_IMAGES

を、tep_image() で呼び出す際、

tep_image(DIR_WS_CATALOG_IMAGES . (ファイル名)                       ...(1)
tep_image(HTTP_CATALOG_SERVER . DIR_WS_CATALOG_IMAGES . (ファイル名) ...(2)

の両方の呼び出し方があるんです。もしかすると、SSLか非SSLかを意識して
あえて使い分けたのかもしれませんが、これだと、ユーザーモードでの運用
に不具合が出ます。

   define('HTTP_CATALOG_SERVER', 'http://www.xxxxx.com/~shop');
   define('DIR_WS_CATALOG_IMAGES', '/images/');

とした場合には、(1)がおかしくなりますし、

   define('HTTP_CATALOG_SERVER', 'http://www.xxxxx.com');
   define('DIR_WS_CATALOG_IMAGES', '/~shop/images/');

とした場合には、(2)がおかしくなります。(後者の場合は、他の相対パスも
すべて /~shop をつける必要があります)


これはバグだと思うので、田村さんの修正を待つのが本筋でしょうが、すぐ
に修正するのであれば、

admin/categories.php
admin/reviews.php
admin/includes/functions/general.php

にある、

tep_image(DIR_WS_CATALOG_IMAGES . (ファイル名)

という部分を、

tep_image(HTTP_CATALOG_SERVER . DIR_WS_CATALOG_IMAGES . (ファイル名)

に書き換えれば良いと思います。この場合、admin/includes/configure.php は、

   define('HTTP_CATALOG_SERVER', 'http://www.xxxxx.com/~shop');
   define('DIR_WS_CATALOG_IMAGES', '/images/');

がお勧めです。(他を修正しなくて良いので)


これでうまくいくとは思いますが、もしうまくいかなかったらまたご相談下さい。

-- 
株式会社PEAK  ネットワーク技術担当 後藤 <gij****@peak*****>




Tep-j-general メーリングリストの案内
Back to archive index