运行 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 docker-compose-boot2docker-install.sh
sh 来自https://www.digitalocean.com/community/tutorials/how-to-install-docker-compose-on-ubuntu-16-04