运行 composer install 时从 shell_exec 获取整个输出

Posted

技术标签:

【中文标题】运行 composer install 时从 shell_exec 获取整个输出【英文标题】:getting the whole output from shell_exec when running composer install 【发布时间】:2017-02-13 00:47:43 【问题描述】:

我正在尝试获取运行此命令 'composer install --no-interaction --no-dev --prefer-dist' 应该生成的全部输出

当我在 shell 中运行这个命令时,输出如下:

使用包信息加载作曲家存储库

从锁文件安装依赖项

无需安装或更新

生成自动加载文件

Illuminate\Foundation\ComposerScripts::postInstall

php 工匠优化

生成优化的类加载器

当我从 php 代码运行相同的命令时:

回声“作曲家:”。 shell_exec('cd .. ; composer install --no-interaction --no-dev --prefer-dist');

我得到的是: 生成优化的类加载器

这是有原因的吗?

【问题讨论】:

【参考方案1】:

shell_exec 捕获写入stdout 的输出。 Composer 将其大部分消息写入stderr,而不是stdout。 “生成优化的类加载器”来自 Laravel 的 artisan 命令,该命令写入 stdout,这就是您看到该消息的原因。

如果您想从shell_exec 获取所有输出,您需要将stderr 重定向到stdout。将2>&1 添加到命令末尾以将stderr 重定向到stdout

echo "composer: " . shell_exec('cd .. ; composer install --no-interaction --no-dev --prefer-dist 2>&1');

【讨论】:

以上是关于运行 composer install 时从 shell_exec 获取整个输出的主要内容,如果未能解决你的问题,请参考以下文章

sh install-composer.sh

sh install-docker-compose.sh

sh install-docker-compose.sh

sh docker-compose-boot2docker-install.sh

sh 来自https://www.digitalocean.com/community/tutorials/how-to-install-docker-compose-on-ubuntu-16-04

lnmp安装到config-set succeeded的时候卡住,解决办法