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


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

我刚刚有了一台新计算机,我一直在设置 PHP/MySQL/数据库等......我想我差不多了,除了它扔了这个曲线球。我的登录脚本工作正常,但现在它吐出以下警告(弄乱了 JSON)。

警告: date() [function.date]: 依赖系统的时区设置是不安全的。你是 需要使用 Date.时区设置或 date_default_timezone_set() 函数。如果您使用了其中任何一个 方法,但您仍然收到此警告,您很可能 时区标识符拼写错误。我们选择了"南极洲/麦格理" 对于"EST/10.0/无夏令时",改为在 .../php/login.php 在线 47

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

$date = date("ymd");
$this_year = date("y");

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

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

谢谢。

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

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

date_default_timezone_set('America/Los_Angeles');

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

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

首先,尽管它可能知道,但这解决了问题。

date_default_timezone_set('Your/Timezone');

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

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

您不必更改 php.ini。

但是,如果你有一个时区,你将用于你的大部分php文件,将以下行添加到你的php中.ini应该可以做到这一点。

date.timezone = "Your/Timezone"

就我而言,我在 php.ini 中添加了以下行。就个人而言,我更喜欢将所有服务器保持在UTC时区。

date.timezone = "UTC"