2

我有一段代码如下:

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

哪个生产

sh: node: command not found

我尝试使用 设置,$PATH然后使用. 输出实际上包含节点的路径。httpd.confSetEnvgetenv('PATH')

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

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

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

4

2 回答 2

3

proc_open 允许您将环境变量传递给它。如果您的 PHP 生成进程的路径,这可能是最容易获取节点的方法。

$env = array(
    'PATH' => '/usr/local/bin' //Path to node bin dir
);

$process = proc_open($command, $descriptorspec, $pipes, __DIR__, $env);
于 2013-09-18T17:35:10.470 回答
1

在 $pipes 之后,您可以分配 CWD。你应该在这里传递它。在用 php.ini 文件设置 cwd 方面,我认为这是不可能的。

您应该能够执行以下操作:

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

提供“节点”可执行文件位于同一目录中。或者,您可以将“节点”移动到

echo getcwd();

虽然这通常有点混乱。

编辑:您还应该能够避免使用 cwd 的别名或符号链接

于 2013-07-24T10:51:54.330 回答