В настоящее время я имею дело с ситуацией, когда я хочу иметь возможность запускать сценарий оболочки или команду из API PHP, что звучит довольно просто, используя exect () или shell_exec (). Проблема в том, что как только я пытаюсь использовать какую-либо библиотеку, пользователь «apache» не может найти библиотеки, которые мне нужны, например, node или pm2.
Я установил node, nvm и pm2 как «ec2-user» в моем amazon linux box, поэтому в настоящее время я пытаюсь, чтобы apache запускал команды «as» ec2-user с этой строкой:
sudo -u ec2-user /usr/local/bin/node -v
что правильно отображает информацию, которую я хотел:
v9.4.0
но когда я пытаюсь с pm2 с этой строкой:
sudo -u ec2-user /usr/local/bin/pm2 -v
Я получаю следующее сообщение:
/usr/bin/env: node: No such file or directory
Если я использую ту же стратегию, я получу это:
sudo -u ec2-user which pm2
which: no pm2 in (/sbin:/bin:/usr/sbin:/usr/bin)
Но если я запускаю его как пользователь ec2, я получаю другой вывод:
[ec2-user@ip-xx-x-x-xx ~]$ which pm2
~/.nvm/versions/node/v9.4.0/bin/pm2
Есть ли какие-либо обходные пути или символическая ссылка или псевдоним, которые мне нужно обновить, чтобы сделать эту работу?
Кстати, у меня есть это в / usr / local / bin (я не знаю, помогает ли это):
lrwxrwxrwx 1 root root 31 Apr 1 07:13 pm2 -> ../lib/node_modules/pm2/bin/pm2
lrwxrwxrwx 1 root root 35 Apr 1 07:13 pm2-dev -> ../lib/node_modules/pm2/bin/pm2-dev
lrwxrwxrwx 1 root root 38 Apr 1 07:13 pm2-docker -> ../lib/node_modules/pm2/bin/pm2-docker
lrwxrwxrwx 1 root root 39 Apr 1 07:13 pm2-runtime -> ../lib/node_modules/pm2/bin/pm2-runtime
Задача ещё не решена.
Других решений пока нет …