PHP - date()与date.timezone / date_default_timezone_set()

时间:2012-04-25 01:45:06

标签: php date warnings php-ini

我刚买了一台新电脑,而且我一直在设置PHP / MySQL /数据库等等...我想我就在那里,除了抛出这个曲线球。我的登录脚本运行正常,但是现在它正在吐出以下警告(这会混淆JSON)。

  

警告:date()[function.date]:   依赖系统的时区设置是不安全的。你是    required 使用date.timezone设置或date_default_timezone_set()函数。如果您使用其中任何一个   方法,你最有可能仍然得到这个警告   拼写错误的时区标识符。我们选择了'南极洲/麦格理'   对于'EST / 10.0 /无DST',而不是在 ... / php / login.php 上    47

我的代码显然使用date()并且正在使用实时版本和旧机器。我收到以下两行代码的两个警告:

$date = date("ymd");

$this_year = date("y");

我的研究(参见here)表明这些函数的行为取决于php.ini。

我应该在新机器上更改php.ini,还是使用某种不推荐使用的方法,我应该完全放弃date()吗?

感谢。

4 个答案:

答案 0 :(得分:12)

如果使用date_default_timezone_set(),则无需更改php.ini文件。只需将其设置为您将要工作的时区即可。

这样的东西应该放在配置文件中或者你正在使用日期的页面上(如果只有一页):

date_default_timezone_set('America/Los_Angeles');

答案 1 :(得分:4)

这不是一个例外,它现在可能会弹出一个警告,因为新计算机上的错误报告设置与旧设备不同。

我建议您遵循警告中的建议,并使用date_default_timezone_set()在您需要的脚本中设置时区。

答案 2 :(得分:4)

首先,虽然你知道,但这解决了这个问题。

date_default_timezone_set('Your/Timezone');

如果要在php.ini中配置,请在下面修改

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

答案 3 :(得分:4)

您不必更改php.ini。

但是,如果你有一个时区,你将用于你的大多数PHP文件,将以下行添加到你的php.ini应该做的伎俩。

date.timezone = "Your/Timezone"

在我的情况下,我将以下行添加到php.ini中。就个人而言,我更愿意将所有服务器保留在UTC时区。

date.timezone = "UTC"