【问题标题】:PHP 8 not revealing short_open_tag settingPHP 8 没有显示 short_open_tag 设置
【发布时间】:2021-08-10 02:35:19
【问题描述】:

以下返回零长度的字符串:

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

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

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

如何让ini_get('short_open_tag') 再次工作?

【问题讨论】:

标签: php php-8 php-shorttags


【解决方案1】:

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

注意:查询布尔值时

off 的布尔 ini 值将作为空字符串或“0”返回,而 on 的布尔 ini 值将作为“1”返回。该函数还可以返回INI值的字符串。

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

var_dump(ini_get('short_open_tag'));

启用设置的输出:

string(1) "1"

一点历史:虽然有a vote taken删除这些标签,但被推翻了。主要问题是在服务器升级时会向最终用户显示的遗留代码——这与该设置继续默认为“开”的原因相同,尽管不鼓励使用它for decades。在第一个 RFC 崩溃后,将短打开标签设为错误条件的 a subsequent proposal 没有获得所需的 2/3 多数通过。

【讨论】:

  • 我为启用该设置 2 分钟进行测试而感到肮脏。 ;)
  • 哈!我将回到这个问题;认为它已经解决了,尽管感谢您不遗余力地评论我之前的一个问题。我很快就会对此进行测试……呃,没有双关语的意思。 ?︀
  • 不用担心,我还认为该功能已被删除,但将不存在的设置提供给 ini_get() 总是返回布尔值 false。所以当你的问题消失时,我正在测试它。
  • 所以var_dump(ini_get('short_open_tag')); 返回(string(0) "" ),我现在不知道该做什么。尽管我似乎无法弄清楚它的位置,但我得到了翻转背后的原因......尽管我仍然有一个空字符串。当然,这仅适用于我的管理概述(不是网站管理员或访问者),但我宁愿弄清楚如何让它工作而不是尝试解析 phpinfo()(是的,确实显示 short_open_tag 设置为 Off) .嗯...想法?
  • 是的,如果该功能关闭,您会得到一个空字符串。因此,由于动态类型,您可以使用if (ini_get("short_open_tag")) { echo "this server is misconfigured"; }。
猜你喜欢
  • 2016-05-15
  • 2011-04-03
  • 1970-01-01
  • 2012-09-16
  • 2013-07-02
  • 2013-11-08
  • 1970-01-01
  • 2017-03-16
  • 2014-05-05
相关资源
最近更新 更多