2012-04-25 43 views
5

我剛剛買了一部新電腦,和我已經建立的PHP/MySQL /數據庫等...我想我只是有,除了它拋出這個曲線球。我的登錄腳本工作正常,但現在它吐出下面的警告(這弄亂了JSON)。PHP - 日期()與date.timezone/date_default_timezone_set()

警告:日期()[function.date]: 這是不是安全的依靠系統的時區設置。您是 需要使用date.timezone設置或date_default_timezone_set()函數。如果你使用任何這些 方法,你仍然得到這樣的警告,你最有可能 拼錯時區標識符。我們選擇了「南極洲/麥格理爲 'EST/10.0 /沒有DST' 相反在.../PHP/login.php中上線

我的代碼顯然使用date()是在現場版本和舊機器上工作。我得到的代碼如下兩行兩個警告:

$date = date("ymd"); 

$this_year = date("y"); 

我的研究(見here)表明,這些功能的行爲取決於php.ini中。

所以我應該在新機器上更改php.ini,還是我使用某種不贊成使用的方法,並且我應該完全拋棄date()

謝謝。

+1

謝謝,所有。使用date_default_timezone_set('...')就像一個魅力。 – Nick 2012-04-25 01:57:24

回答

11

你並不需要,如果你使用date_default_timezone_set()修改php.ini文件。只要將它設爲您也將工作的時區

像這樣的事情在配置文件或者你使用日期(如果它只有一個頁面)在頁面上應該去:

date_default_timezone_set('America/Los_Angeles'); 
4

這不是一個例外,它可能是現在可能彈出的警告,因爲新機器上的錯誤報告設置與舊機器不同。

我會建議遵循警告的建議,並使用date_default_timezone_set()設置時區在你需要它的腳本。

+1

我更新了帖子,將'exception'更改爲'warning':) – Nick 2012-04-25 01:56:35

4

首先,你雖然可能知道,這解決了這個問題。

date_default_timezone_set('Your/Timezone'); 

如果你想在php.ini配置,修改以下

[Date] 
; ... 
; ... 
date.timezone = Your/Timezone 
4

你不必改變php.ini中。

但是,如果你有,你會用大部分的PHP文件中添加以下行到php.ini應該做的伎倆的時區。

date.timezone = "Your/Timezone" 

在我的情況下,我添加了以下行到php.ini。就個人而言,我更願意將我們所有的服務器都保存在UTC時區。

date.timezone = "UTC"