2016-10-04 3 views
1

Я пытаюсь получить весь вывод, что выполнение этой команды «композитор установки --no-взаимодействий --no-DEV --prefer-распред» должен генерироватьполучать весь вывод shell_exec при запуске композитор установки

Когда я запускаю эту команду в оболочке, вывод:

Загрузка композитор репозиториев с информацией пакета

Установка зависимостей от блокировки файла

Ничто I nstall или обновить

Генерация файлов автозагрузка

Осветите \ Foundation \ ComposerScripts :: постустановочных

PHP ремесленник оптимизируют

Создание оптимизированный загрузчик классов

, когда я запускаю же команду php code:

echo "
композитор:". shell_exec ('cd ..; установка композитора --no-взаимодействие --no-dev --prefer-dist');

Все, что я получаю: Генерирование оптимизированный загрузчик классов

Есть ли причина для этого?

ответ

2

shell_exec отображает вывод, записанный на stdout. Композитор записывает большую часть своих сообщений в stderr, а не stdout. «Генерирующий оптимизированный загрузчик классов» поступает из команды мастеров Laravel, которая записывается в stdout, поэтому вы видите это сообщение.

Вам необходимо перенаправить команду stderr на номер stdout, если вы хотите получить весь результат от shell_exec. Добавьте 2>&1 в конец вашей команды для перенаправления stderr на stdout.

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