O servidor Websocket não conectará se iniciado via PHP

1

Eu tenho um servidor websocket escrito em Node. A seguinte instrução, quando executada a partir da linha de comando, inicia o servidor websocket com sucesso:

nohup "/root/.nvm/versions/node/v8.11.1/bin/node" "/var/www/bm-server/bm-server" 1337 > "/var/www/bm-server/logs.txt" 2>&1 &

Posso ver que o servidor está em execução porque pgrep -x "bm-server" exibe o PID.

Eu sei que a porta está aberta e atendendo porque # netstat -an | grep ":1337" produz:

tcp6       0      0 :::1337                 :::*                    LISTEN

Eu sei que a porta está acessível porque telnet myhost 1337 conecta com sucesso de outra máquina.

E meu aplicativo da web pode se conectar e usar o servidor conforme o esperado.

O problema é que eu quero iniciar o programa via PHP:

exec('nohup "/root/.nvm/versions/node/v8.11.1/bin/node" "/var/www/bm-server/bm-server" 1337 > "/var/www/bm-server/logs.txt" 2>&1 &', $stdout, $exitcode);

Esse comando, quando executado a partir do PHP, passa pelos mesmos testes acima, exceto quando se conecta a partir do navegador. Eu consigo conectar-me com o telnet muito bem, mas quando tento conectar-me pelo navegador, obtenho

failed: Error in connection establishment: net::ERR_CONNECTION_CLOSED

Tem que ter algo a ver com o ambiente no qual o PHP executa o código. Eu não consigo descobrir o que poderia ser afetado por isso no script embora.

Aqui está a origem do servidor , caso seja importante.

Qual é o problema com o usuário PHP (www-data) iniciando o servidor? BTW eu também dei permissão www-data para rodar o sudo sem uma senha e tentei com o sudo também, mas isso não fez diferença.

    
por Occam's Razor 26.10.2018 / 18:18

0 respostas