オープンソースの販売サイト構築ソフト EC-CUBE についてのメモ。

海外サーバなどで時刻がずれる

海外のサーバなどでは、現地時刻や GMT を基準に動作しているため、時刻がずれて表示される場合がある。

専用サーバ・VPS

サーバのタイムゾーンを変更する正規の方法が用意されていると思いますので、それに従う。

理解せずに下記の共用サーバの方法で誤魔化すと、面倒な問題を伴う恐れがある。

例: CentOS 7、Amazon Linux 2

# timedatectl set-timezone Asia/Tokyo

共用サーバ

PHP

.user.ini を使える場合

date.timezone = Asia/Tokyo
  • モジュール版ならば、.htaccess でも良いはず。

SC_Initial のコンストラクタ

     function SC_Initial() {
+        date_default_timezone_set('Asia/Tokyo');
  • PHP が CGI & suexec で動作しているならば、環境変数を変更る方が良いかも。(未確認)

DB(MySQL)

SC_DbConn のコンストラクタ

             if (DB_TYPE == 'mysql') {
                 $objDbConn->query('SET NAMES utf8');
+                $objDbConn->query("SET time_zone = '+9:00'");
             }
  • インターネットに転がっている情報の中には「SUPER 権限があるならば、『SET GLOBAL time_zone = '+9:00'』と1回実行すれば良い」とする説もあるが誤り。再起動すると、元に戻る。所謂 my.cnf にセットする必要がある。(一般的な共用サーバでは難しい?)

DB(PostgreSQL)

SC_DbConn のコンストラクタ

+            if (DB_TYPE == 'pgsql') {
+                $objDbConn->query("SET TIME ZONE 'JST-9'");
+            }

※ 未検証

tips/時刻がずれる.txt · 最終更新: 2024/10/24 10:26 by seasoft
© 2008-2024 Seasoft.