PHP 8 不显示 short_open_tag 设置

PHP 8 not revealing short_open_tag setting

下面returns一个长度为零的字符串:

<?php
print_r(ini_get('short_open_tag'));
?>

在两台 PHP 8 服务器(apache2handler 和 cgi-fcgi)上,我需要知道是否启用了短标签,因为它会与 XML 产生冲突。我不能为了去看 phpinfo().

而停止我正在做的一切

此代码在两台服务器上的 PHP 7.4 中运行良好。现在,我确实知道短标签 已禁用 尽管我需要能够在服务器升级后快速知道。

如何让 ini_get('short_open_tag') 重新工作?

虽然这是一个布尔值设置,ini_get 实际上 return a string

Note: When querying boolean values

A boolean ini value of off will be returned as an empty string or "0" while a boolean ini value of on will be returned as "1". The function can also return the literal string of INI value.

因此,当启用该功能时,它会 return “1”,您可以使用它来检查设置的状态。 (尽管该注释中的最后一句话,我从未见过任何字面值,例如布尔值的“on”或“off”returned。)

var_dump(ini_get('short_open_tag'));

启用设置后的输出:

string(1) "1"

一点历史:虽然有 a vote taken to remove these tags, it was overturned. The chief concern was with legacy code that would have been displayed to end users when the server was upgraded – the same reason the setting continues to default to "On" despite its use being discouraged for decades. After the meltdown over the first RFC, a subsequent proposal 使短开放标签成为错误条件,但没有获得所需的 2/3 多数通过。