2

次のようなコードがあります。

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

どちらが生産しますか

sh: node: command not found

$PATHで設定しhttpd.confSetEnvから、 を使用してエコーしようとしましgetenv('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 に答える