PHP date.timezone 警告

PHP date.timezone 警告

我一直收到这个错误:

消息:date() [function.date]:依赖系统的时区设置并不安全。您必需的使用 date.timezone 设置或 date_default_timezone_set() 函数。如果您使用其中任何一种方法,但仍然收到此警告,则您很可能拼错了时区标识符。我们选择了“America/New_York”来代替“EST/-5.0/no DST”

我已经编辑了我的 php.ini 并将其添加到其末尾:date.timezone =“America/New_York”

保存 php.ini 并重新启动 Apache 后,仍然出现错误。我还尝试重新启动整个服务器,但无济于事。

我在 CentOS 5.6 上运行 cPanel/WHM,不知道这有什么区别。另外,PHP 处理程序是 suphp。

我不知道下一步该尝试什么...有什么指导吗?

答案1

打开相应的 php.ini 文件并添加以下内容,将时区替换为您正确的时区(时区名称列表 -http://php.net/date.timezone):

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "America/Chicago"

更多详细信息:

http://forums.modx.com/thread/33294/solved-warning-strtotime-function-strtotime-in-evo-1-01-on-php-5-3-0

答案2

听起来您的系统上可能有多个 php.ini,并且编辑了错误的文件。我相信可以使用 suPHP 为每个 vhost 指定不同的 php.ini 目录(使用 suPHP_ConfigPath 选项)。

您有几个选择。首先:您可以(如错误消息所建议的那样)使用:

date_default_timezone_set()

然而,这确实降低了代码的可移植性。

或者,您可以通过创建 phpinfo 页面来仔细检查脚本执行时加载了哪个 php.ini 文件;即,只需一个可通过 Web 访问的 php 文件,其中包含以下内容:

<?php
phpinfo();

查看页面并查找标有“已加载配置文件”和“已解析其他 .ini 文件”的部分。这些应该会告诉您需要编辑哪些 ini 文件。

值得检查全部其中任何一个列出的文件可能包含拼写错误的 date.timezone 设置,这些设置将覆盖您设置的设置。

答案3

我通过删除字符串值周围的引号解决了这个问题。

所以,

date.timezone =“欧洲/伦敦”

变成...

日期.时区 = 欧洲/伦敦

问题就解决了。不过我对此有点担心。

答案4

我刚刚解决了这个问题。起初,我以为读取了错误的 php.ini。经过多次检查,我发现了问题所在。这是因为我在 php.ini 中间多了一个 ',所以那里出现了错误,导致其余部分无法加载。我修复了它,它运行正常。您可以通过运行以下命令来查看是否有任何错误:php -i | grep php.ini | tail -n2
Mariano

相关内容