Как запустить Node.js скрипт из PHP с помощью XAMPP?

#php #node.js #xampp #phantomjs #shell-exec

#php #node.js #xampp #phantomjs #shell-exec

Вопрос:

Я использую XAMPP в Windows 7 для запуска локального хоста, и я пытаюсь использовать функцию PHP exec для выполнения Node.js сценарий.

Я могу успешно использовать exec функцию для запуска скриптов PhantomJS, но когда я пытаюсь сделать то же самое для Node.js , это не работает.

Он является примером PHP-скрипта, который правильно запускает скрипт PhantomJS:

 <?php

  exec('/phantomjs/bin/phantomjs /phantomjs/scripts/test.js', $output);
  print_r($output);
 

И вот аналогичный пример Node.js скрипт, который каждый раз выводит пустой массив:

 <?php

  exec('/Program Files (x86)/nodejs/node /Program Files (x86)/nodejs/test.js', $output);
  print_r($output);
 

Я уверен, что все мои пути верны и что Node.js скрипт выполняется корректно всякий раз, когда я выполняю его непосредственно из командной строки, но я не могу получить ничего, что можно было бы вернуть из Node.js скрипт, когда я запускаю его из команды PHP exec . Я также попробовал следующий скрипт, но все равно ничего не получаю:

 <?php

  exec('/Program Files (x86)/nodejs/node -v', $output);
  print_r($output);
 

Буду признателен за любые советы о том, чего мне не хватает. Спасибо.

Комментарии:

1. Я бы предположил, что проблема заключается в пробелах в пути, попробуйте экранировать их символом обратной косой черты : /Program Files (x86)... . Вам также может потребоваться двойной escape, чтобы сохранить символ обратной косой черты в строке и отправить его в оболочку, не уверен : /Program\ Files\ (x86)... .

2. Вы были на правильном пути, но то, что в конечном итоге сработало, было немного другим. Я пробовал 1, 2, 3, даже 4 обратных косых черты, чтобы избежать пробелов, и это не сработало, но затем я заключил полные пути в двойные кавычки, и все сработало нормально. Другими словами, сработало следующее: exec('"/Program Files (x86)/nodejs/node" "/Program Files (x86)/nodejs/test.js"', $output); . Если вы хотите превратить свой комментарий в ответ, я с радостью приму его. Спасибо.