我一直收到这个错误:
消息: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"
更多详细信息:
答案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