Php 如何防止composer立即将stderr打印到stdout 目标

Php 如何防止composer立即将stderr打印到stdout 目标,php,shell,composer-php,Php,Shell,Composer Php,如果缺少.env,请停止运行composer安装 composer.jsonsnippet 输出 渴望的 与上面相同,但不带积垢,特别是立即回响且冗余的.env缺失。请创建.env 问题: 如何防止作曲家立即回音该字符串?甚至在使用-q开关时也会发生这种情况我想知道这应该如何工作 您正在要求Composer运行您的脚本。该脚本创建输出,并显示输出 现在,来自该脚本的返回代码表示一个错误条件。剩下的就看作曲家了。通知用户哪个脚本失败了是个好主意(这会在回送输出后直接解释该行),因为脚本不必回送任何

如果缺少
.env
,请停止运行composer安装

composer.json
snippet 输出 渴望的 与上面相同,但不带积垢,特别是立即回响且冗余的
.env缺失。请创建.env

问题:
如何防止作曲家立即回音该字符串?甚至在使用
-q
开关时也会发生这种情况

我想知道这应该如何工作

您正在要求Composer运行您的脚本。该脚本创建输出,并显示输出

现在,来自该脚本的返回代码表示一个错误条件。剩下的就看作曲家了。通知用户哪个脚本失败了是个好主意(这会在回送输出后直接解释该行),因为脚本不必回送任何内容,您可以在那里自由运行多个脚本行

然后,常规Composer错误显示将在另一时间启动,再次说明错误条件产生了一些输出

现在我想知道你想压制什么。第一行?那就什么都不要回应

还有其他的吗?不走运,这是作曲家处理错误的一般方式


回过头来看,我会问为什么不允许Composer安装依赖项?Composer不需要该文件—如果您的代码需要该文件,它应该为用户提供一种更简单的创建该文件的方法,或者检查该文件是否存在,并使用合理的默认值假设作出反应,或拒绝工作-这将使您能够更好地控制显示错误消息的情况。

如果脚本正确返回错误,则编写器应该具有停止的逻辑。当脚本丢失时,它能否生成一个工作的.env?我想要抑制的是相同字符串的2x输出。这有意义吗?我将其回显到stderr,而stderr通常不会命中stdout,这就是重定向的点,除非我离目标很远。看起来composer将错误和输出都定向到标准输出,然后在失败时再次报告错误。无论如何,为了澄清,我希望错误输出为1x。
"scripts": {
    "pre-install-cmd": "[[ -a .env ]] || echo '.env missing. please create .env' 1>&2 && exit 1;"
},
$ composer install
.env missing. please create .env
Script [[ -a .env ]] || >&2 echo '.env missing. please create .env' && exit 1; handling the pre-install-cmd event returned with an error



  [RuntimeException]
  Error Output: .env missing. please create .env