Я запускаю некоторые сценарии node.js с forever .
Я начал их как пользователь www-data (т.е. через ssh, регистрируясь как www-data @ server и печатая forever start myapp.js и т.д.).
Хорошо, все идет как очарование; мое приложение работает, как и ожидалось, и forever list показывает мне запущенные процессы.
Затем я написал (очень простой) скрипт с именем foreverList.sh и поместил в папку /var/www/scripts/ :
#!/bin/bash
echo "checking running node.js scripts:"
forever list
Когда я выполняю скрипт из оболочки как пользователь www-data , он работает. Здесь нет ничего особенного. Но этот сценарий должен использоваться с PHP 5.6 через Apache 2.4 с:
<?php
// ....
$resp_script = shell_exec("/var/www/scripts/foreverList.sh 2>&1");
echo "<pre>$resp_script</pre>";
И когда я выполняю его через свой веб-браузер (так с кодом PHP выше), это не работает !! Я получаю это сообщение об ошибке forever (nodejs, а не php):
/usr/lib/node_modules/forever/lib/forever.js:674
procs.forEach(function (proc) {
^
TypeError: Object Error: EACCES, permission denied '/root/.forever/sock' has no method 'forEach'
...
... #(stack trace follows)
Я действительно не понимаю, почему он работает с папкой /root, так как я запускаю все это из папки /var /www / и как пользователь www-data (добавил в сценарий whoami чтобы проверить, что это так, и оно делает).
Я что-то пропустил? Это навсегда ошибка?
Любая помощь будет высоко ценится.
ОБНОВЛЕНИЕ : я попытался добавить echo $HOME в скрипт bash, и он ничего не возвращает. Стирает ли сам PHP переменную окружения home path пользователя www-data ?
