Заранее извиняюсь, если на этот вопрос уже был дан ответ. Трудно найти что-то подобное. Как уже сказано в заголовке, я пытаюсь создать процесс Symfony2, который выполняет cmd-файл в Windows, сценарий оболочки в linux.
На линуксе все работает просто отлично. Однако в Windows происходит сбой при попытке передать переменные среды моему процессу.
http://symfony.com/doc/current/components/process.html
Код выглядит примерно так:
$process = new Process('Z:\bin\webpack.cmd', 'Z:\var\www\webpacktest\www\app\cache\dev');
$process->setEnv([
'PATH' => getenv('path')
'NODE_PATH' => 'Z:\\bin\\node_modules'
]);
$process->run();
Процесс завершается с кодом выхода (-1073741819) и не производит никакого вывода вообще.
Когда я удаляю setEnv
метод и не передать никаких env-переменных, процесс работает отлично.
редактировать: я использую Windows 10 Home. Запуск PHP 5.6
У меня была точно такая же проблема, так как для обхода я использовал putenv:
putenv("NODE_PATH=Z:\\bin\\node_modules");
$process = new Process('Z:\bin\webpack.cmd', 'Z:\var\www\webpacktest\www\app\cache\dev');
$process->run();
putenv("NODE_PATH=");
В вашем примере вам не нужно проходить PATH
как вы не меняете его, и он все равно наследуется.
Других решений пока нет …