2013-07-24 4 views
1

У меня есть кусок кода следующим образом:Как установить правильный путь для proc_open

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

Который производит

sh: node: command not found 

Я попытался установить $PATH в httpd.conf с SetEnv, а затем повторить его с помощью getenv('PATH') , На выходе фактически содержится путь к узлу.

Я был в состоянии pass переменной до proc_open, но я хотел бы избежать этого, потому что это чужой код.

Есть ли способ дать мне правильный путь?

Я бегу XAMPP 1.8.2 для Mac OS X.

ответ

1

После того, как $ труб можно назначить УХО. Вы должны передать его здесь. Что касается установки cwd с файлом php.ini, я не думаю, что это возможно.

Вы должны быть в состоянии сделать следующее:

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

Обеспечение «узла» исполняемый файл находится в том же каталоге. В качестве альтернативы вы можете переместить «узел» на

echo getcwd(); 

Хотя это немного грязно.

Edit: Вы также должны быть в состоянии уйти с использованием псевдонима или символической ссылки на Д

+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); 
Смежные вопросы