#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);
. Если вы хотите превратить свой комментарий в ответ, я с радостью приму его. Спасибо.