如何为proc_open设置正确的PATH

时间:2013-07-24 09:31:55

标签: php apache xampp

我有一段代码如下:

$process = proc_open(sprintf('node "%s"', $tmpfile), $desc, $pipes);

哪个产生

sh: node: command not found

我尝试使用$PATHhttpd.conf中设置SetEnv,然后使用getenv('PATH')回复它。输出实际上包含节点的路径。

我能够pass变量proc_open,但我想避免这种情况,因为它是别人的代码。

我有办法给它正确的路径吗?

我正在为Mac OS X运行XAMPP 1.8.2。

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