WordPress 3.0與PHP 5的時區問題

自從上周日把主機移到美國後就覺得網站的時間有點怪怪的,明明已經把WordPress 3.0裡的時區設定成UTC+8(也設過Taipei),但每天約9點時觀察的點擊紀錄比搬家前的數字少很多,但另一個獨立的統計數字卻沒有明顯差異,因此猜測可能是WordPress系統裡的時區問題,今天特別針對這個問題搜尋解答。

找了半天都沒有看到WordPress 3.0有類似狀況發生,只找到一篇Php 5.3.0 & WP 2.8 (It is not safe to rely on the system's timezone)看來癥狀類似,但本網站的PHP版本是5.2.13,WordPress是3.0,和這篇文章的環境又不相同。盡管環境不同,但文章中提到的解決方案多少也來試一下好了。

PHP 5開始在PHP.ini增加了date.timezone參數,用來設定PHP環境的時區,以phpinfo檢查後確認本網站並未設定此參數。再來用下列PHP指令顯示目前的時區值:

<?php
  echo '目前時區=' . date('e c'); 
?>

顯示出的確實是UTC時區,而不是設定好的UTC+8:

目前時區=UTC 2010-06-24T15:10:12+00:00

我試了上列文章裡的兩種修改方法:

  • 修改wp-content/wp-config.php:增加下列指令,結果無法生效
    date_default_timezone_set( 'Asia/Taipei' );
  • 修改wp-includes/functions.php:增加下列指令在第一行,此方法有效
    date_default_timezone_set( 'Asia/Taipei' );

另外,我也修改wp-content/wp-settings.php第30到32行,也能生效:

// Set default timezone in PHP 5.
if ( function_exists( 'date_default_timezone_set' ) )
  date_default_timezone_set( 'Asia/Taipei' ); // UTC

修改好後再顯示出來的時區就是需要的UTC+8了:

目前時區=Asia/Taipei 2010-06-24T23:17:45+08:00

先這樣修改,再觀察看看吧。另外,後台管理cPanel的時區找不到地方修改,是否有先進能指點一二?

##

您可能也會有興趣的類似文章

簡睿

服務於軟體業的資訊老兵。興趣廣泛,學習力佳,樂於分享所知所學。

您可能也會喜歡…

1 個回應

  1. 2010/09/14

    […] WordPress 3.0與PHP 5的時區問題 […]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *