如何修复与时区相关的 PHP 错误(function.strtotime 和 function.date)

Posted

技术标签:

【中文标题】如何修复与时区相关的 PHP 错误(function.strtotime 和 function.date)【英文标题】:How to fix PHP errors related to timezone (function.strtotime and function.date) 【发布时间】:2012-02-07 08:33:03 【问题描述】:

升级到新服务器,我重复两次错误:

警告:strtotime() [function.strtotime]:依赖它是不安全的 系统的时区设置。您必须使用 date.timezone 设置或 date_default_timezone_set() 函数。在 如果你使用了这些方法中的任何一种,你仍然得到这个 警告,您很可能拼错了时区标识符。我们 为 'EST/-5.0/no DST' 选择了 'America/New_York' 而不是...

警告:date() [function.date]:依赖 系统的时区设置。您必须使用 date.timezone 设置或 date_default_timezone_set() 函数。在 如果你使用了这些方法中的任何一种,你仍然得到这个 警告,您很可能拼错了时区标识符。我们 为“EST/-5.0/no DST”选择了“America/New_York”

我该如何解决这些问题?

有问题的代码是这样的:

'date' => date("Y-M-d",strtotime($Array['_dateCreated'])),

我已经尝试将它放在我所有页面顶部的包含中:

<?php
date_default_timezone_set('America/New_York');
?>

提前感谢您的帮助。

【问题讨论】:

相关:***.com/q/4428546/819417 注意: php-cliphp.ini 文件与 apache2php.ini 文件不同。我建议将一个符号链接到另一个以使它们保持同步并避免混淆! 【参考方案1】:

php.ini 中的date.timezone 可以全局解决此问题。

【讨论】:

由于某种原因,我的 /etc/php.ini 文件中添加的 date.timezone 似乎即使在重新启动 apache 后也被忽略了。 原来 /etc/php.ini 不是正确的,而是 [domain]/httpdocs/etc/php.ini 是有效的。 您可以通过执行phpinfo() 并查找Loaded Configuration File 来找出您的服务器关心的php.ini【参考方案2】:

通过放置来解决这个问题

date_default_timezone_set('America/New_York');

在抱怨的实际文件中。

【讨论】:

我更喜欢这个。因为我不想更新我的 php.ini 文件。此外,您可以在全局范围内为您的项目设置默认时区

以上是关于如何修复与时区相关的 PHP 错误(function.strtotime 和 function.date)的主要内容,如果未能解决你的问题,请参考以下文章

即使在 php 中设置时区后,服务器中的时间戳也会给出错误的时间

如何修复这个与 div 相关的运行时错误为零?

如何在 PHP 中修复警告非法字符串偏移

如何在 PHP 输出字符串中修复“网页中与脚本相关的 HTML 标签的不正确中和(基本 XSS)”

如何修复与 MacOSX 上的全局命名空间错误中没有成员相关的缺失时间?

修复错误:“运算符不存在:没有时区的时间戳>整数”错误