【发布时间】:2019-11-28 16:09:47
【问题描述】:
我刚刚在 Windows 上从 PHP 7.3.12 升级到 PHP 7.4.0(今天发布)。
这一直有效:
<?php
$input = fgets(STDIN);
var_dump($input);
现在输出:
bool(false)
它不再要求/允许输入。它立即返回一个 bool false。
我在更新日志或手册页中找不到任何关于 fgets 的最新更改的提及。
怎么了?我应该做些什么?这是一个错误吗?它是已知的吗?有没有其他人遇到过?
另外,如果这是错误的(尽管工作了这么长时间,尽管我在网上找到了推荐的代码),那么接受用户输入/等待 Enter 的“真实”方式是什么?
我现在暂时降级回 7.3.12 来解决这个问题。
编辑:终于有人为此提交了错误报告。我当然希望它不会被忽视,就像许多 FOSS 项目中经常发生的那样:https://bugs.php.net/bug.php?id=78883
【问题讨论】:
-
世界上没有什么是完美的。您绝对不应该害怕将来升级您的 PHP 版本——但有两句话建议:首先阅读变更日志,然后在本地环境中进行(这样您的生产数据不会受到影响)。如果一切正常,您也可以在生产主机中升级。
-
@Qirel 如前所述,我确实阅读了更改日志。对此什么也没说。
-
@u_mulder 我对 var_dump 有什么期望?当然是返回值。像你这样的人在这个网站上随意、无端的侮辱是怎么回事?
-
作为记录,该错误现已修复,将成为 7.4.1 版本的一部分。