如果通过 PHP 启动,Websocket 服务器将无法连接

如果通过 PHP 启动,Websocket 服务器将无法连接

我有一个用 Node.js 编写的 websocket 服务器。从命令行执行以下指令时,将成功启动 websocket 服务器:

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 &

我可以看到服务器正在运行,因为pgrep -x "bm-server"显示了 PID。

我知道端口已打开并正在侦听,因为# netstat -an | grep ":1337"会产生:

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

我知道该端口可以访问,因为telnet myhost 1337从另一台机器成功连接。

我的网络应用程序可以按预期连接并使用服务器。

问题是我想通过 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);

从 PHP 运行该命令时,它会通过与上述相同的所有测试,但从浏览器连接时除外。我可以很好地使用 telnet 连接,但是当我尝试从浏览器连接时,我得到

failed: Error in connection establishment: net::ERR_CONNECTION_CLOSED

这和PHP执行代码的环境有关系。但我无法弄清楚脚本中的内容可能会受到什么影响。

这是服务器的源,如果重要的话。

PHP用户(www-data)启动服务器有什么问题?顺便说一句,我还授予 www-data 权限,可以在没有密码的情况下运行 sudo ,并尝试使用 sudo ,但这并没有什么区别。

相关内容