海外サーバーのhostgatorでEC-CUBEを構築しているのですが、受注日時などが14時間ずれてしまっていました。
これは、サーバーが海外なので、時間設定(タイムゾーンtimezone)がニューヨークなど日本から時差のある場所にあるため、発生する問題です。
これを解決する方法をメモしておきます。 主にhostgatorでの設定ですが、ほかのサーバーでもだいたい同じだと思います。
hostgatorの場合、/public_html内ではなく、/home/username(FTPで入った場合はルート)にあるphp.iniを編集します。
※usernameはhostgatorのユーザーネームに置き換えてください。
1 2 |
[Date] date.timezone = "Asia/Tokyo" |
先ほど設定したphp.iniを適用するために、/public_htmlの.htaccesに下記を追記
1 2 3 4 5 6 7 |
<IfModule mod_suphp.c> suPHP_ConfigPath /home/username <Files php.ini> order allow,deny deny from all </Files> </IfModule> |
※usernameはhostgatorのユーザーネームに置き換えてください。
これで、PHPの設定は完了です。 次に、MySQLのタイムゾーンの設定。
>ここを参考にしました
data/class/SC_Query.phpの76行目あたりを下記に修正
1 2 3 4 5 6 7 8 9 10 11 12 |
if ($new) { $this->conn = MDB2::connect($dsn, $options); $this->conn->query("SET time_zone = '+9:00'"); } else { $this->conn = MDB2::singleton($dsn, $options); $this->conn->query("SET time_zone = '+9:00'"); } if (!PEAR::isError($this->conn)) { $this->conn->query("SET time_zone = '+9:00'"); $this->conn->setCharset('utf8'); $this->conn->setFetchMode(MDB2_FETCHMODE_ASSOC); } |
これで、時間の表示が日本の時間になりました。