如果之前已经回答过这个问题,请提前道歉。很难找到完全像这样的东西。正如标题所说,我试图产生一个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
答案 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
,因为您不会更改它并且它仍然是继承的。