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

我刚刚在 Windows 上从 PHP 7.3.12 升级到 PHP 7.4.0(今天发布)。


这一直有效到现在:


<?php


    $input = fgets(STDIN);

    var_dump($input);

它现在输出:


bool(false)

它不再要求/允许输入。它立即返回 bool false。


我在更新日志或手册页中找不到任何关于 fgets 的最新更改的提及。


怎么了?我应该做些什么?这是一个错误吗?它是已知的吗?有没有其他人遇到过?


另外,如果这是错误的(尽管工作了这么长时间,尽管我在网上找到了推荐的代码),那么接受用户输入/等待输入的“真实”方式是什么?


我现在暂时降级回 7.3.12 来解决这个问题。


慕码人2483693
浏览 68回答 1
1回答

繁花不似锦

确认我在 7.4 中遇到了相同的行为。我现在创建了一个笨拙的解决方法:&nbsp; &nbsp; ob_start();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// buffer so we don't see the output generated at DOS prompt&nbsp; &nbsp; $cmd_line='SET/P phpinput= & SET phpinput';&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Step 1: prompt user to enter a value for variable phpinput & Step 2: display the value for phpinput&nbsp; &nbsp; $result=system($cmd_line);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Execute&nbsp; &nbsp; $result=str_replace('phpinput=', '', $result);&nbsp; &nbsp; &nbsp; // Clean up the returned result&nbsp; &nbsp; ob_end_clean();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// resume normal output&nbsp; &nbsp; echo "\nReturned result from user typing is: $result\n";
打开App,查看更多内容
随时随地看视频慕课网APP