Php 如何为proc_open设置正确的路径
我有一段代码如下:Php 如何为proc_open设置正确的路径,php,apache,xampp,Php,Apache,Xampp,我有一段代码如下: $process = proc_open(sprintf('node "%s"', $tmpfile), $desc, $pipes); 产生 sh: node: command not found 我试图用SetEnv在httpd.conf中设置$PATH,然后用getenv'PATH'回显它。输出实际上包含到节点的路径 我可以使用变量proc_open,但我想避免使用它,因为它是其他人的代码 我有没有办法给它一条正确的道路 我正在运行适用于Mac OS X的XAMPP
$process = proc_open(sprintf('node "%s"', $tmpfile), $desc, $pipes);
产生
sh: node: command not found
我试图用SetEnv在httpd.conf中设置$PATH,然后用getenv'PATH'回显它。输出实际上包含到节点的路径
我可以使用变量proc_open,但我想避免使用它,因为它是其他人的代码
我有没有办法给它一条正确的道路
我正在运行适用于Mac OS X的XAMPP 1.8.2。在$pipes之后,您可以分配CWD。你应该把它传过来。就用php.ini文件设置cwd而言,我认为这是不可能的 您应该能够执行以下操作:
$process = proc_open(sprintf('node "%s"', $tmpfile), $desc, $pipes, __DIR__);
提供的节点可执行文件位于同一目录中。或者,您可以将节点移动到
echo getcwd();
虽然这通常有点乱
编辑:
您还应该能够在$pipes之后使用别名或符号链接到cwd,这样您就可以分配cwd了。你应该把它传过来。就用php.ini文件设置cwd而言,我认为这是不可能的 您应该能够执行以下操作:
$process = proc_open(sprintf('node "%s"', $tmpfile), $desc, $pipes, __DIR__);
提供的节点可执行文件位于同一目录中。或者,您可以将节点移动到
echo getcwd();
虽然这通常有点乱
编辑:
您还应该能够使用指向cwd的别名或符号链接,而不受影响。proc\u open允许您将环境变量传递给cwd。如果PHP生成的进程的路径正确,那么这可能是最容易获取节点的方法
$env = array(
'PATH' => '/usr/local/bin' //Path to node bin dir
);
$process = proc_open($command, $descriptorspec, $pipes, __DIR__, $env);
proc_open允许您将环境变量传递给它。如果PHP生成的进程的路径正确,那么这可能是最容易获取节点的方法
$env = array(
'PATH' => '/usr/local/bin' //Path to node bin dir
);
$process = proc_open($command, $descriptorspec, $pipes, __DIR__, $env);
谢谢你关于符号链接的想法。这段代码在服务器上运行得很好,只是我想在不更改代码的情况下获得本地版本。感谢关于符号链接的想法。这段代码在服务器上运行良好,只是我想在不更改代码的情况下获得本地版本。