У меня была эта проблема раньше, когда node
не было на пути пользователя веб-сервера.Второй аргумент метода Process::run()
- это массив переменных среды.Используйте его для установки пути.
<?php
use Symfony\Component\Process\Process;
$env = ["PATH" => "/sbin;/bin:/usr/sbin:/usr/bin:/path/to/node/if/its/different"];
$process = new Process('cd /path/to/angular-bug && ng build');
$process->run(function ($type, $buffer) {
if (Process::ERR === $type) {
echo 'ERR > '.$buffer;
} else {
echo 'OUT > '.$buffer;
}
}, $env);
Проблема в том, что где-то в этом процессе сборки что-то просто вызывает node
и ожидает, что оно будет в пути.(Я думаю, что испытал это при запуске npm
.) Это не очень хорошая вещь, и программное обеспечение должно знать, где оно находится, из-за настроек времени компиляции или информации из системы управления пакетами, или оно должнопопытаться найти его.