You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Composer运行交互式脚本时无法获取输入的问题排查

Symfony命令在Composer脚本中无法获取输入的问题解决

这是Composer的默认行为限制,而非不可调整的固有限制。Composer运行脚本时默认会重定向标准输入(stdin),导致Symfony Console的QuestionHelper无法读取用户输入,进而出现空密码引发的无限循环问题。

可行的解决办法

1. 执行脚本时强制开启交互模式

运行Composer脚本时添加--interactive参数,强制Composer将标准输入传递给子命令:

composer run-script your-command --interactive

2. 配置Composer默认启用输入传递

在项目的composer.json中添加config节点,设置默认启用输入传递:

{
    "config": {
        "use-input": true
    }
}

保存后执行composer dump-autoload使配置生效,之后直接运行composer run-script your-command即可支持交互。

3. 在Symfony命令中强制指定输入流

如果前两种方法无效,可以在命令代码中显式读取终端标准输入:

use Symfony\Component\Console\Input\StreamInput;
use Symfony\Component\Console\Question\Question;

// 在命令的execute方法内
$stdin = fopen('php://stdin', 'r');
$streamInput = new StreamInput($stdin);

$passwordQuestion = new Question('请输入密码:');
$passwordQuestion->setHidden(true);
$password = $this->getHelper('question')->ask($streamInput, $this->output, $passwordQuestion);

这种方式绕过Composer的输入重定向,直接读取终端输入。

内容的提问来源于stack exchange,提问作者Álvaro González

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 05:21:06