2015-08-20 2 views
2

Извините, если этот вопрос уже был дан раньше. Трудно найти что-то подобное. Как уже упоминалось в заголовке, я пытаюсь запустить процесс Symfony2, который выполняет cmd-файл в Windows, скрипт оболочки на Linux.windows - Symfony2 Сбой при передаче переменных env

На 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 vars, процесс выполняется отлично.

Редактировать: Я запускаю Windows 10 Home. Запуск PHP 5.6

ответ

2

У меня была точно такая же проблема, как работа вокруг я 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, пока вы не измените его, и он унаследовал так или иначе.

+0

Удивительный, большое спасибо! Я никогда не думал об использовании этого :) – Harold