“依靠系统的时区设置是不安全的”背后的理由是什么?

时间:2014-06-27 08:17:45

标签: php datetime

在python中,我可以做到

import datetime
print datetime.datetime.now().strftime('%Y-%m-%d')
# prints `2014-06-27`. 

同样,在node.js中:

console.log(new Date().toDateString());
// Fri Jun 27 2014

当我在php中尝试相同时:

<?php
print date('Y-m-d');
?>

我收到了这个

  

警告:date():依赖系统的时区设置是不安全的。您必需使用date.timezone设置或date_default_timezone_set()函数。如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符。我们现在选择了时区'UTC',但请设置date.timezone以选择您的时区。在....

此消息背后的理由是什么?为什么python或节点不麻烦?使用系统时区到底有什么“不安全”?

由于有很多关于此错误的帖子,请仔细阅读:我要求如何解决此问题(非常明显) ),我想知道为什么我首先得到这条消息。

2 个答案:

答案 0 :(得分:3)

PHP传统上用于Web开发,因此一个合理的原因是Web服务的使用者不会与托管服务器的时区处于同一时区,并且可能是配置的for(就系统时间而言)。

警告在系统用户看到客户端正确时间的上下文中是有意义的。

here进行了一些讨论,其中提到了我上面给出的理由。来自同一页面的另一个理由,来自可能是PHP语言开发人员的人。

  

不 - 作为管理员,您需要做出明智的决定   你想要什么时区。有太多的bug   报告人们没有线索,所以现在我们发出警告。

答案 1 :(得分:0)

阅读完本帖后

http://grokbase.com/t/php/php-internals/135qbh5twa/date-timezone-e-warning-really-necessary-whats-the-rationale

我了解此警告没有有效的技术原因。唯一的原因是来自php组的人认为减少bugs.php.net上的bug报告数量会很有用。所以,基本上是一种magic_quotes种东西。