PHP 時區錯誤 強制設定修正

在新灌好的 Debian Wheezy 跑 PHP, 發現時間是錯誤的, 但是 Linux 的 Timezone 設定都正確.

於 Debian / Ubuntu Linux 設定正確 timezone + 時間, 可用下述步驟:

  1. dpkg-reconfigure tzdata # 選 Asia -> Taipei
  2. 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.

  3. 但是設定完後, 於 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"

相關網頁

 

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料