海外サーバなどで時刻がずれる
海外のサーバなどでは、現地時刻や 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'"); + }
※ 未検証