Запуск и остановка npm из PHP скрипта - PullRequest
0 голосов
/ 10 марта 2020

ОК, глупый вопрос. Можно ли запустить npm из скрипта PHP через браузер? Например, делая что-то вроде этого?

// start.php
echo exec('npm run forever');
die();

И затем, чтобы остановить узел, например:

// stop.php
echo exec('npm run stopforever');
die();

Я попытался установить абсолютный путь в обоих php scripts (/var/www/mysite.com/) и пакет. json, и он не работает.

Если я пытаюсь выполнить скрипт через терминал (php -q /var/www/mysite.com/start.php), он работает, но не когда я попробуйте выполнить скрипт из браузера. Я предполагаю, что это как-то связано с правами и привилегиями, поэтому я, возможно, не буду делать это правильно.

Есть ли даже рекомендуемый способ сделать это? Причина, по которой мне это нужно, заключается в том, чтобы иметь возможность запускать и останавливать Node-сервер по своему желанию, не входя в консоль как пользователь root.

1 Ответ

0 голосов
/ 10 марта 2020

Вы должны использовать полный путь к исполнительным файлам.

Попробуйте так: (Работал на Windows сервере)

shell_exec('C:\Users\Administrator\AppData\Roaming\npm\pm2.cmd');

Если вы запускаете php на nginx или apache (например, посетите url example.com/index.php), иногда вам нужно экспортировать PATH

exec("export PATH=/usr/local/bin && run forever);
...