2016-10-04 306 views
1

我試圖讓整個輸出,運行此命令「作曲家安裝--no交互--no-dev的--prefer - 距離」應該產生時正從輸出了shell_exec整個運行作曲家安裝

當我在殼運行此命令是這樣的輸出:

加載作曲家庫與包信息

安裝從鎖文件

沒有依賴關係爲i nstall或更新

生成自動加載的文件

照亮\基金會\ ComposerScripts ::安裝後

PHP工匠優化

生成優化的類加載器

當我運行在相同的命令php代碼:

回聲「
作曲家:」。 shell_exec('cd ..; composer install --no-interaction --no-dev --prefer-dist');

我得到的是: 生成優化的類加載器

是有什麼原因呢?

回答

2

shell_exec捕獲寫入stdout的輸出。作曲家將其大部分信息寫入stderr,而不是stdout。 「生成優化類加載器」來自Laravel的工匠命令,該命令寫入stdout,這就是您看到該消息的原因。

如果您想要獲得shell_exec的所有輸出,您需要將stderr重定向到stdout。將2>&1添加到您的命令末尾以將stderr重定向到stdout

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