2014-03-31 67 views
0

在PHP 5.4中添加的警告,以提醒時區的問題,這種錯誤是很常見的:設置時區不適用?

警告:的strtotime():這是不是安全的依靠系統的時區設置。您需要需要才能使用date.timezone設置或date_default_timezone_set()函數。如果您使用這些方法中的任何一種,並且仍然收到此警告,則很可能是拼寫錯誤的時區標識符。我們現在選擇了「UTC」時區,但請設置date.timezone以選擇您的時區。 in somefile.php on line 42

好,夠公平的。添加date_default_timezone_set('UTC')非常簡單,但我不希望爲每個腳本都做這件事,特別是在CLI上做東西時。

所以我添加了一行到我的php.ini文件:

date.timezone=UTC 

而且......這是行不通的。警告仍然出現。

對於調試,我這樣做:

echo file_get_contents(php_ini_loaded_file()); 

,並將其輸出:

extension=./ext/php_gd2.dll 
extension=./ext/php_oauth.dll 
extension=./ext/php_curl.dll 

date.timezone=UTC 

extension線所有的工作 - 我帶他們出去,我不能使用這些功能,我把它們放在裏面,我可以。這只不過是date.timezone。我究竟做錯了什麼?

+0

試日期.timezone =('America/New_York')更多時區選項檢查http://us.php.net/manual/en/timezones.php –

+0

@ p.vansia我希望UTC雖然;) –

回答

0
  1. 我對的OpenWRT類似的問題 - 原來你需要 設置正確的/ etc /本地時間

    赤在/ usr/share/zoneinfo中/可用的時區(更新系統如果 需要)並選擇你的味道(只需複製正確的文件)。

  2. 我有另外一個問題是有不同的php.ini文件的 不同版本的PHP - CGI,FPM,CLI等 - 確保你已經 加入date.timezone線中的所有你的系統上有 的php.ini文件。

編輯

你可能在你的php.ini文件這樣的第二行:

; some lines of variables 
date.timezone = UTC 
; more lines of variables 
date.timezone = 
; even more lines 

,這將有效地覆蓋您date.timezone

+0

嗨藍色,謝謝你的答案。我應該指定,但我在Windows上運行,所以我沒有'/ etc/localtime'或'/ usr/share/zoneinfo'。另外,我只有一個PHP.ini文件,並不能解釋'php_ini_loaded_file()'清楚地顯示timezone指令。 –

+0

@NiettheDarkAbsol - 您是否嘗試過使用時區名單中的時區 - > [歐洲](http://www.php.net/manual/en/timezones.europe.php)**? – blue

+0

@NiettheDarkAbsol - 請運行只有* phpinfo(); *的頁面,並找到「加載的配置文件」。確保在該文件中有date.timezone行。 FIY - 我剛剛用UTC測試過它,它工作得很好。 – blue