在新灌好的 Debian Wheezy 跑 PHP, 發現時間是錯誤的, 但是 Linux 的 Timezone 設定都正確.
於 Debian / Ubuntu Linux 設定正確 timezone + 時間, 可用下述步驟:
- dpkg-reconfigure tzdata # 選 Asia -> Taipei
- ntpdate time.stdtime.gov.tw
Local time is now: Thu Jul 25 14:35:17 CST 2013.
Universal Time is now: Thu Jul 25 06:35:17 UTC 2013. - 但是設定完後, 於 PHP 的 timezone 都還是 Universal Time 的時間.
PHP 時區錯誤 強制設定修正
抓 PHP 設定的時間值來看, 會發現是設定到 "Asia/Chongqing"
<?php echo date_default_timezone_get(); // Asia/Chongqing ?>
解法1:
使用 date_default_timezone_set() 強制設定 "Asia/Taipei".
<?php echo date('Y-m-d H:i:s'); 2013-07-25 06:39:27 date_default_timezone_set('Asia/Taipei'); echo date('Y-m-d H:i:s'); 2013-07-25 14:39:27 ?>
解法2:
設定 php.ini (於 Debian / Ubuntu 把 php.ini 分成 apache / cgi / cli 各自的 php.ini), 所以採用下述設定比較方便:
- vim /etc/php5/conf.d/date_timezone.ini # 於此檔案加下述
date.timezone = "Asia/Taipei"
相關網頁