如何修复来自 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 警告:file_exists():文件名超过此平台上允许的最大路径长度 (260)?