为什么 PHP 7.4 on Windows 中止所有需要用户输入的命令行操作?

Why does PHP 7.4 on Windows aborts all command line actions that require user input?

我有一个本地设置,用于在 3 台不同的 Windows 10 台电脑上使用 Symfony 5.0 进行开发,当 PHP 版本为 7.3 时,它们都没有问题,而且它们都有相同的当它是 7.4 时出现问题。

它发生在任何需要用户输入的执行上,例如: * php bin/console make:entity * php bin/console doctrine:migrations:migrate.

php bin/console make:migration 这样不需要用户输入的其他命令工作正常,所以似乎等待输入是问题所在。

运行 它们在非交互模式下适用于 yes/no 那些,但对于很多人来说是不可能的,比如 make:entity

这是终端的输出:

PS C:\path\project> php bin/console make:entity

 Class name of the entity to create or update (e.g. VictoriousPuppy):
 >

  Aborted.  


make:entity [-a|--api-resource] [--regenerate] [--overwrite] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--] <command> [<name>]

PS C:\path\project>

中止立即发生,无需等待输入。我同时安装了 7.3 和 7.4 版本,切换到 7.3 后可以正常工作,所以我查看了两个 php.ini 文件,没有发现任何错误。我直接从 php.net 站点 https://www.php.net/downloads.php

上的 Windows 下载链接安装了它们

我的 PHP 版本安装在 C:\php.3C:\php.4 中,要切换它们,我只需更改 windows 环境变量中的 PATH。 php -v 如果我重新打开终端会生成正确的版本。

团队成员 运行 在 MacOS 上使用 7.4 没有问题,Ubuntu 18.04 暂存服务器也没有问题,所以它一定是我的 Windows 安装所特有的东西。

这是 PHP 7.4.0 for Windows 的错误。

该错误已被注册here,并已在昨天 12 月 18 日发布的 7.4.1 版本中修复。

只需 download 最新的 PHP 版本,就可以了。