PHP 的 y2k_compliance php.ini 设置做了什么?

这个问题纯粹是出于学术目的,因为该设置在 PHP 5.4 中被删除并且 2000 年已经过去很久了,但是有人知道y2k-compliance配置设置做了什么吗?

PHP文档不会告诉你多少:

y2k_compliance(布尔值)

强制执行 2000 年合规性(将导致不合规浏览器出现问题)

所以,那里没有多少有用的信息!

在 Google 搜索中,大部分内容重复上述内容或提及设置的删除,我发现的唯一附加信息是此页面,其中指出:

一些用户可能使用过时的、不合规的浏览器。如果出于某种奇怪的原因您确定您站点的许多用户属于该组,则禁用 y2k_compliance 参数;否则,它应该被启用。

y2k_compliance = On

指定是否应使 PHP 脚本符合 2000 年。使 PHP 脚本符合 Y2K(通过将此指令设置为 On)将导致不符合 Y2K 的浏览器出现问题。

更多的信息,但仍然是一个非常高级的描述。

我一直无法找到有关此设置试图解决什么问题或如何解决问题的任何技术信息。

那么,如果该y2k-compliance标志被禁用,PHP 有什么不同呢?


ABOUTYOU
浏览 203回答 2
2回答

慕的地10843

好吧,那不是过去的爆炸!我至少有 10 年没有见过这个了。该行为很简单,实际上很容易追溯到源代码。它只真正影响 PHP 引擎的一部分。它的关键很简单。RFC 850 (1983) 指定所有日期格式都应具有日期的最后两位数字。RFC 822 改变了这一点。然而,这并不意味着所有浏览器都神奇地更新了,甚至知道如何处理这个问题。出于这个原因,添加了这个标志,因此人们可以根据他们运行旧(当时)浏览器的用户数量,随意设置他们想要旧格式还是新格式。

红糖糍粑

不确定这是否有帮助,但我从 PHP3 中找到了一些旧文档,其中更详细地描述了 Y2K 合规性。正如预期的那样,它与处理 2 位数年份格式有关。来源:archive.org : php.net/y2k.php32000 年合规性和 PHP与 Perl 一样,PHP 与您的铅笔一样符合 2000 年。您需要担心的是使用 PHP 编写的应用程序,而不是 PHP 本身。cookie 中的日期存在问题。Netscape 最初指定 cookie 上的到期日期应采用 2 位年份格式。由于所有的 y2k 炒作,他们决定在 Netscape 4 及更高版本中改变这种行为。这并不意味着 2 位数年份不符合 y2k 标准。例如,“13”的 2 位数年份在 Netscape 中将被理解为 2013 年。所有浏览器都理解这种 2 位格式,因此这是 PHP 中的默认格式。一些 y2k 狂热分子仍然坚持无论如何都不要使用两位数的年份,对于这些人来说,PHP 在 php3.ini 文件中提供了一个 y2k_compliance 配置设置。
打开App,查看更多内容
随时随地看视频慕课网APP