这个问题纯粹是出于学术目的,因为该设置已在PHP 5.4中删除,而2000年已经过去了,但是有人知道y2k-compliance
配置设置的作用吗?
PHP documentation并不能告诉您很多信息:
y2k_compliance(布尔值)
强制执行2000年合规性(将导致不合规的浏览器出现问题)
因此,那里没有太多有用的信息!
在Google搜索中,大部分重复上述操作或提及该设置已被删除的内容,我发现的唯一附加信息是this page,其中指出:
某些用户可能正在使用过时的,不兼容的浏览器。如果出于某种奇怪的原因,您确定您的网站用户数量属于该组,请禁用y2k_compliance参数;否则,应启用它。
y2k_compliance = On
指定是否使PHP脚本兼容2000年。使PHP脚本兼容Y2K(通过将此指令设置为On)将导致不兼容Y2K的浏览器出现问题。
更多信息,但仍然是非常高级的描述。
我无法找到有关此设置试图解决什么问题或如何解决该问题的任何技术信息。
那么,如果禁用了y2k-compliance
标志,PHP有什么不同之处?
答案 0 :(得分:4)
嗯,那不是过去的爆炸!至少有10年没有见到这个了。
此行为很简单,实际上可以轻松地追溯到source code。它只会真正影响PHP引擎的一部分。
问题的症结很简单。 RFC 850(1983)指定所有日期格式应具有日期的最后两位位。 RFC 822对此进行了更改。但是,这并不意味着所有浏览器都进行了神奇的更新,甚至不知道如何处理。
出于这个原因,添加了此标志,因此人们可以根据运行旧(当时)浏览器的用户数来随意设置是旧格式还是新格式。
答案 1 :(得分:3)
不确定这是否有帮助,但是我从PHP3找到了一些旧文档,其中更详细地描述了Y2K合规性。正如预期的那样,它与处理两位数的年份格式有关。
来源:archive.org:php.net/y2k.php3
2000年合规性和PHP
像Perl一样,PHP大约和铅笔一样符合2000年标准。您需要担心的是使用PHP编写的应用程序,而不是PHP本身。
cookie中的日期存在问题。最初是网景 指定cookie的到期日期应为两位数年份 格式。由于所有的y2k宣传,他们决定更改此行为 在Netscape 4及更高版本中。这并不意味着两位数年份不是 符合y2k。例如,可以理解两位数年份为“ 13” 作为Netscape中的2013年。所有浏览器都可以理解这个两位数 格式,因此这是PHP中的默认设置。仍然有一些y2k狂热者 坚持无论如何都不要使用两位数的年份,对于那些 people PHP的y2k_compliance配置设置可在 php3.ini文件。