为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 7.4 是否破坏了 fgets(STDIN)?

PHP 7.4 是否破坏了 fgets(STDIN)?

PHP
慕码人2483693 2022-05-27 16:10:57
我刚刚在 Windows 上从 PHP 7.3.12 升级到 PHP 7.4.0(今天发布)。这一直有效到现在:<?php    $input = fgets(STDIN);    var_dump($input);它现在输出:bool(false)它不再要求/允许输入。它立即返回 bool false。我在更新日志或手册页中找不到任何关于 fgets 的最新更改的提及。怎么了?我应该做些什么?这是一个错误吗?它是已知的吗?有没有其他人遇到过?另外,如果这是错误的(尽管工作了这么长时间,尽管我在网上找到了推荐的代码),那么接受用户输入/等待输入的“真实”方式是什么?我现在暂时降级回 7.3.12 来解决这个问题。
查看完整描述

1 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

确认我在 7.4 中遇到了相同的行为。我现在创建了一个笨拙的解决方法:


    ob_start();                                         // buffer so we don't see the output generated at DOS prompt

    $cmd_line='SET/P phpinput= & SET phpinput';         // Step 1: prompt user to enter a value for variable phpinput & Step 2: display the value for phpinput

    $result=system($cmd_line);                          // Execute

    $result=str_replace('phpinput=', '', $result);      // Clean up the returned result

    ob_end_clean();                                     // resume normal output

    echo "\nReturned result from user typing is: $result\n";


查看完整回答
反对 回复 2022-05-27
  • 1 回答
  • 0 关注
  • 67 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信