node.js — выполнение сценария узла из веб-приложения php (Windows)

У меня есть веб-приложение php, и на одном из маршрутов я пытаюсь выполнить скрипт узла.

Расположение скрипта узла: C:\Users\meusr\Workspace\www\myproject\directImport.js

Я настроил свой package.json так, чтобы npm start выполнял вышеуказанный скрипт.

Исполняемый файл index.php приложения php (laravel), расположенный по адресу: C:\Users\meusr\Workspace\www\myPHPproject\public\

И на одном из моих маршрутов: импортер / бег

Я имею:

$commandToRun = "npm start --prefix ". env('IMPORTER_PATH'). " /dev/null 2>&1";

Где IMPORTER_PATH настроен в моем env, как: IMPORTER_PATH = C:\Users\meusr\Workspace\www\myproject\

когда я пытаюсь выполнить команду с exec

exec($commandToRun, $output);

Страница продолжает загружаться без вывода, без ошибок и без конца.

Сценарий не имеет проблем, и выполнение той же команды в командной строке в системе Windows работает:

npm start --prefix C:\Users\meusr\Workspace\www\myproject\

выходы, как и ожидалось.

Сначала я подумал, что это проблема с разрешением (что должно было вызвать ошибку, но я все еще пытался запустить другую команду)

exec('npm -v', $output);

который выводит мою версию npm.

Точно так же я пытался использовать просто node directImport.js что тоже не сработало.

Затем попытался изменить каталог на каталог, в котором находится файл узла, и снова выполнил команду.
exec(cd C:\Users\meusr\Workspace\www\myproject\ && dir /dev/null 2>&1) // this works, but:

exec(cd C:\Users\meusr\Workspace\www\myproject\ && node directImport.js /dev/null 2>&1) // this didn't work

0

Решение

Благодаря miken32 у меня сработало:

<?php
$commandString = 'start /b c:\\programToRun.exe -attachment "c:\\temp\file1.txt"';
pclose(popen($commandString, 'r'));
?>

http://php.net/manual/en/function.popen.php#92413

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector