如何修复来自 PHP 中 date() 的警告" [重复]

Posted

技术标签:

【中文标题】如何修复来自 PHP 中 date() 的警告" [重复]【英文标题】:How to fix warning from date() in PHP" [duplicate] 【发布时间】:2011-07-28 23:25:29 【问题描述】:

我在 winxp 上使用 XAMPP(php 版本 5.3.1)。当我尝试在本地主机上调用 time() 或 date() 函数时。它将显示警告消息,

严重性:警告

消息:date() [function.date]:它是 不安全地依赖系统的 时区设置。你是必需的 使用 date.timezone 设置或 date_default_timezone_set() 功能。如果您使用任何 那些方法,你还在 收到此警告,您很可能 时区标识符拼写错误。我们 为 '8.0/no DST' 选择了 'UTC' 而是

文件名:helpers/date_helper.php

如何禁用警告?谢谢。

【问题讨论】:

嗯...阅读消息,好吗? :-P 您需要使用date.timezone设置或date_default_timezone_set()功能。 【参考方案1】:

尝试在php.ini 文件中设置date.timezone。或者您可以使用ini_set()date_default_timezone_set() 手动设置。

【讨论】:

我找到了。完成并立即工作。 date.timezone = Asia/Shanghai 这个答案在我的情况下不起作用。在这里查看:***.com/questions/15807087/…我如何使用ini_set() @Frank,你可以date_default_timezone_set('Europe/Minsk'); date.timezone php.net/manual/en/timezones.php 的有效值列表【参考方案2】:

你需要像这样设置默认时区:

date_default_timezone_set('Europe/Bucharest');

在http://php.net/manual/en/function.date-default-timezone-set.php了解更多信息

或者您可以在日期前使用@ 来抑制警告,但是由于警告指出依赖服务器默认时区是不安全的

【讨论】:

感谢您提供几个选项和手册链接。但是,手册和警告都不是很清楚。有什么不安全的。我想使用当地时间。当我带着我的电脑旅行并更改我的时区时,我希望它使用它而不是 php.ini 中的一些陈旧版本。我们没有系统时间是有原因的吗? 如果您环游世界,您的操作系统时区会改变吗?如果是这样,您可以检查并正确设置***.com/questions/4700156/… 如果不是,那么您可以进行 geoip 查找,但您会遇到不同的问题(用户发出的每个请求,您的服务器都会发出另一个请求,因此您需要存储值等)。服务器不应该在全球范围内旅行吗? 当然,服务器通常是固定的,尽管它们不一定是固定的。但是,我不仅将 php 用于服务器应用程序,所以是的,当我旅行时,我设置我的操作系统时区以查看正确的时间。尽管互联网上有很多关于此警告的页面,但没有人解释它的不安全之处...... 大多数 php 应用程序都是网站,并且它们中的大多数托管在共享服务器上......因此系统时间并不是大多数开发人员对其目标受众的期望。 p.s.这只是我的常识:)【参考方案3】:

你也可以这样用:

ini_alter('date.timezone','Asia/Calcutta');

您应该在调用任何日期函数之前调用它。它接受 key 作为第一个参数以在运行时更改 PHP 设置,第二个参数是 value。

在我想通之前我已经做了这些事情:

    将 PHP.timezone 更改为“Asia/Calcutta” - 但不起作用 更改了 ini 中的 lat 和 long 参数 - 无效 使用 date_default_timezone_set("Asia/Calcutta"); - 无效 使用 ini_alter() - 成功了 评论了date_default_timezone_set("Asia/Calcutta"); - 成功了 恢复了对 PHP.ini 所做的更改 - 工作正常

对我来说,init_alter() 方法让一切正常。

我在 OSX 山狮上运行 Apache 2(预装)、PHP 5.3

【讨论】:

这是唯一有效的方法 只是提醒任何想知道的人,但ini_alter 只是ini_set 的一个鲜为人知的别名【参考方案4】:

这只是发生在我身上,因为 在 php.ini 中没有设置 date.timezone!

;date.timezone=欧洲/柏林

使用 php date() 函数触发了该警告。

【讨论】:

【参考方案5】:
error_reporting(E_ALL ^ E_WARNING);

:)

您应该更改主题“如何修复 PHP 中 date() 的警告”...

【讨论】:

以上是关于如何修复来自 PHP 中 date() 的警告" [重复]的主要内容,如果未能解决你的问题,请参考以下文章

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

如何修复 PHP 警告:file_exists():文件名超过此平台上允许的最大路径长度 (260)?

使用 count() 修复 WordPress 插件文件中的 php sizeof 警告/错误

严重性:php 页面中的警告错误

如何修复php中日期到日期之间的错误

如何修复php非法偏移错误[重复]