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

isa*_*ton 5 php symfony php-7.4

我有一个在 Symfony 5.0 上在 3 台不同的 Windows 10 PC 上进行开发的本地设置,当 PHP 版本为 7.3 时,它们都没有问题,当 PHP 版本为 7.4 时,它们都有相同的问题。

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

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

以非交互模式运行它们适用于是/否,但对很多人来说是不可能的,比如 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>
Run Code Online (Sandbox Code Playgroud)

中止立即发生,无需等待输入。我安装了 7.3 和 7.4 两个版本,切换到 7.3 使其工作正常,所以我查看了这两个php.ini文件并没有发现任何问题。我直接从 php.net 站点https://www.php.net/downloads.php上的 Windows 下载链接安装它们

我的 PHP 版本已安装C:\php\7.3C:\php\7.4切换它们,我只需更改 Windows 环境变量中的 PATH。php -v如果我重新打开终端,则会生成正确的版本。

在 MacOS 上运行的团队成员在 7.4 上没有问题,在 Ubuntu 18.04 临时服务器上也没有问题,所以它必须是特定于我的 Windows 安装的东西。

yiv*_*ivi 6

这是 Windows 版 PHP 7.4.0 的一个错误。

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

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