我有一段代码如下:
$process = proc_open(sprintf('node "%s"', $tmpfile), $desc, $pipes);
哪个产生
sh: node: command not found
我尝试使用$PATH
在httpd.conf
中设置SetEnv
,然后使用getenv('PATH')
回复它。输出实际上包含节点的路径。
我能够pass变量proc_open
,但我想避免这种情况,因为它是别人的代码。
我有办法给它正确的路径吗?
我正在为Mac OS X运行XAMPP 1.8.2。
答案 0 :(得分:2)
proc_open允许您将环境变量传递给它。如果PHP生成进程的路径,这可能是最容易获取的节点。
$env = array(
'PATH' => '/usr/local/bin' //Path to node bin dir
);
$process = proc_open($command, $descriptorspec, $pipes, __DIR__, $env);
答案 1 :(得分:1)
$ pipe之后你可以分配CWD。你应该把它传递给这里。在使用php.ini文件设置cwd方面,我认为这不可行。
您应该能够执行以下操作:
$process = proc_open(sprintf('node "%s"', $tmpfile), $desc, $pipes, __DIR__);
提供“node”可执行文件位于同一目录中。或者,您可以将“节点”移动到
echo getcwd();
虽然这通常有点乱。
编辑: 您还应该能够使用别名或符号链接到cwd