windows - 通过env变量时Symfony2进程崩溃

时间:2015-08-20 18:34:36

标签: php windows symfony symfony-process

如果之前已经回答过这个问题,请提前道歉。很难找到完全像这样的东西。正如标题所说,我试图产生一个Symfony2进程,该进程在Windows上执行cmd文件,在linux上执行shell脚本。

在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方法而没有通过任何环境变量时,该过程运行完美。

编辑:我正在运行Windows 10 Home。运行PHP 5.6

1 个答案:

答案 0 :(得分: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,因为您不会更改它并且它仍然是继承的。