这个问题纯粹是为了学术目的,因为PHP5.4中删除了这个设置,2000年已经过去了,但是有谁知道y2k-compliance吐温设置做了什么呢?
PHP文档并没有告诉你太多:
y2k_compliance (布尔型) 强制执行2000年问题(将导致不兼容浏览器的问题)
所以,没有多少有用的信息!
在谷歌搜索中,我发现的唯一附加信息是此页,它主要是重复上面的内容或删除设置的引用,其中声明:
一些用户可能正在使用过时的、不兼容的浏览器。如果出于某种奇怪的原因,您确信您的站点的许多用户都属于这个组,那么禁用y2k_compliance参数;否则,应该启用它。
y2k_compliance = On指定是否应使PHP脚本兼容2000年。使PHP Y2K兼容(通过将此指令设置为On)将导致非Y2K兼容浏览器的问题。
更多的信息,但仍然是一个非常高层次的描述.
我一直无法找到任何技术信息,该设置试图解决的问题,或它如何解决它。
那么,如果禁用了y2k-compliance标志,PHP有什么不同的做法呢?
发布于 2019-08-10 21:03:10
那不是过去的爆炸吗?我至少有10年没见过这个了。
这种行为很简单,而且实际上很容易跟踪回源代码。它实际上只影响PHP引擎的一部分。
问题的症结很简单。RFC 850 (1983)规定,所有日期格式都应具有日期的最后两位数字。RFC 822改变了这一点。然而,这并不意味着所有浏览器都会神奇地更新,甚至不知道如何处理。
由于这个原因,添加了这个标志,因此人们可以根据运行旧浏览器(当时)的用户数量随意设置旧格式还是新格式。
发布于 2019-08-10 21:01:39
不确定这是否有帮助,但我从PHP3中找到了一些旧的文档,这些文档更详细地描述了Y2K法规。正如预期的那样,它与处理两位数的年份格式有关.
2000年顺应性与PHP 与Perl一样,PHP与您的铅笔一样兼容2000年。您需要担心的是用PHP编写的应用程序,而不是PHP本身。曲奇中的日期有问题。Netscape最初指定cookie的到期日期应该是2位数的年份格式。由于所有的y2k炒作,他们决定改变网景4和更高版本的这种行为。这并不意味着2位数的年份不符合y2k。例如,在Netscape中,两位数的年份"13“将被理解为2013年。所有浏览器都理解这种2位格式,因此这是PHP中的默认格式.一些y2k狂热者仍然坚持无论如何都不要使用2位数的年份,对于那些人来说,php3.ini文件中有一个y2k_compliance配置设置。
https://stackoverflow.com/questions/57445567
复制相似问题