Estou executando alguns scripts node.js com forever
.
Eu os iniciei como www-data
user (ou seja, via ssh logging como www-data @ server e digitando forever start myapp.js
, etc.).
Ok, tudo é como um encanto; meu aplicativo funciona como esperado e digitar forever list
mostra os processos em execução.
Em seguida, escrevi um script (muito simples) chamado foreverList.sh
e coloquei na pasta /var/www/scripts/
:
#!/bin/bash
echo "checking running node.js scripts:"
forever list
Quando executo o script do shell como www-data
user, ele funciona. Nada extravagante aqui. Mas, este script deve ser usado com o PHP 5.6 através do Apache 2.4, com:
<?php
// ....
$resp_script = shell_exec("/var/www/scripts/foreverList.sh 2>&1");
echo "<pre>$resp_script</pre>";
E quando eu o executo via meu navegador (assim com o código PHP acima), ele não funciona !! Eu recebo esta mensagem de erro forever
(nodejs, não 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)
Eu realmente não entendo por que ele lida com a pasta / root, já que estou executando todas essas coisas da pasta / var / www / e como www-data
user (adicionei um whoami
no script para verificá-lo foi o caso, e isso acontece).
Eu sinto falta de algo? É um bug para sempre?
Qualquer ajuda será muito apreciada.
UPDATE : tentei adicionar echo $HOME
no script bash e ele não retorna nada. O próprio PHP apaga a variável de ambiente do caminho inicial de www-data
user?