如何修复与时区相关的 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-cli
的 php.ini
文件与 apache2
的 php.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 中设置时区后,服务器中的时间戳也会给出错误的时间
如何在 PHP 输出字符串中修复“网页中与脚本相关的 HTML 标签的不正确中和(基本 XSS)”