2013-07-24 58 views
1

適當PATH我有一段代碼如下:如何設置proc_open

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

哪個產生

sh: node: command not found 

我試圖設置$PATHhttpd.confSetEnv,然後回聲它使用getenv('PATH') 。輸出實際上包含節點的路徑。

我能夠pass變量爲proc_open,但我想避免這種情況,因爲它是別人的代碼。

有沒有辦法讓我給它正確的道路?

我運行XAMPP 1.8.2的Mac OS X

回答

1

的$管道您可以指定CWD之後。你應該在這裏通過它。關於用php.ini文件設置cwd,我不認爲這是可能的。

你應該能夠做到以下幾點:

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

提供的「節點」可執行文件在同一目錄下。或者,您可以將「節點」移動到

echo getcwd(); 

雖然這通常有點麻煩。

編輯: 你也應該能夠使用別名或符號鏈接到CWD

+0

感謝您關於符號鏈接的想法。這段代碼在服務器上運行良好,只是我想在不更改代碼的情況下獲得本地版本。 – BenMQ

1

proc_open可以傳遞環境變量進去就完事了。如果你的PHP派生進程的路徑,這可能是最簡單的獲取節點。

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

$process = proc_open($command, $descriptorspec, $pipes, __DIR__, $env);