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他のコンピュータから正常に接続されたため、そのポートにアクセスできることがわかります。

私のWebアプリケーションは期待どおりにサーバーに接続して使用できます。

問題は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)がサーバーを起動する際にどのような問題がありますか?ところで、パスワードなしでsudoを実行できるようにwww-data権限も付与してsudoを使ってみましたが、あまり違いはありませんでした。

ベストアンサー1

おすすめ記事