Margy Mutoh
margy****@roseb*****
2004年 12月 8日 (水) 19:11:44 JST
こんにちは。Margyです。 海外サーバで運用する場合にタイムゾーンの変更をどこでしたらいいか? というテーマについては、過去にも何度か出てきていますが、 本家フォーラムを参考に、最近やっとどうにか成功しつつありますので、 ご報告がてら、アドバイスいただきたく投稿します。 私の行った改造は、以下のような手順です。 1) admin/includes/application_top.php catalog/includes/application_top.php それぞれの冒頭に、以下の1行を 挿入する。 putenv("TZ=Asia/Tokyo"); 2) admin/includes/languages/japanese.php catalog/includes/languages/japanese.php それぞれの冒頭に、以下の3行を 挿入する。 putenv("TZ=Asia/Tokyo"); @setlocale(LC_TIME, 'ja_JP'); $jp_date_time = date("Y-m-d H:i:s"); ※私は DATE_FORMAT_SHORT の直前に入れました。 3) 以上を行ったうえで、必要なphpファイルにおいて、日付時刻取得の now() を $jp_date_time(記述のしかたによっては'".$jp_date_time."') に変更する。 ※変更すべきファイルがかなりありますので、grepで now() を検索して 適宜、変更しました。 この方法は putenv が使えるサーバでないとダメだという話だったと 思いますが、私のところでは使えたので、これでほぼ解決しました。 そこで一つアドバイスいただきたいのですが、私の入れているCredit Class & Gift Voucherのモジュール内で、どうにもこの変更が効かない 部分がありました。 問題のコードは、catalog/includes/modules/order_total/ot_coupon.php というファイルなのですが、該当部分はデフォルトでこんなコードです。 $date_query=tep_db_query("select coupon_start_date from " . TABLE_COUPONS . " where coupon_start_date <= now() and coupon_code='".$HTTP_POST_VARS['gv_redeem_code']."'"); ここの now() を $jp_date_time に置き換えるために、いろいろと試行 錯誤の末、now() を now($jp_date_time) とすることで、どうにか正常に 機能するようになりました。 ただ、他のファイルでは now() を $jp_date_time(クエリ中の場合は '".$jp_date_time."')と置き換えることで実現できた変更が、この ファイルだけ、こういう記述のしかたでしか動かないのが、今ひとつ 気になってます。 now($jp_date_time) という記述のしかたは正しいのでしょうか? 関数や変数の扱い方がいまいちよくわかっていないので、ここだけを こういう書き方をすることで、他の部分に何か影響があるのでは?…と 心配です。 どなたか、アドバイスいただけましたら幸いです。 よろしくお願いいたします。 Margy Mutoh