溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

workerman無法socket的解決方法

發(fā)布時(shí)間:2021-01-16 12:38:21 來源:億速云 閱讀:338 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹workerman無法socket的解決方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

workerman無法socket怎么辦?

Workerman是一款純PHP開發(fā)的開源高性能的PHP socket 服務(wù)器框架。被廣泛的用于手機(jī)app、手游服務(wù)端、網(wǎng)絡(luò)游戲服務(wù)器、聊天室服務(wù)器、硬件通訊服務(wù)器、智能家居、車聯(lián)網(wǎng)、物聯(lián)網(wǎng)等領(lǐng)域的開發(fā)。但是在配置workerman情況下,不免有些意想不到的錯(cuò)誤,下面小編整理網(wǎng)上資料并整合自身遇到的問題,給出以下幾種常用的解決方案。

現(xiàn)象1

啟動(dòng)后報(bào)錯(cuò)類似如下:

php start.php start
PHP Warning:  stream_socket_server(): unable to connect to tcp://xx.xx.xx.xx:xxxx (Address already in use) in /home/workerman-chat/Workerman/Worker.php on line xxxx

關(guān)鍵字: Address already in use

失敗原因:

端口被占用,無法啟動(dòng)。

可以通過命令netstat -anp | grep 端口號(hào)來找出哪個(gè)程序占用了端口。

然后停止對(duì)應(yīng)的程序釋放端口解決。

如果不能停止對(duì)應(yīng)端口的程序,可以通過更換workerman的端口解決。

如果是Workerman占用的端口,又無法通過stop命令停止(一般是丟失pid文件或者主進(jìn)程被開發(fā)者kill了導(dǎo)致),可以通過運(yùn)行以下兩個(gè)命令殺死Workerman進(jìn)程。

killall php
ps aux|grep WorkerMan|awk '{print $2}'|xargs kill -9

現(xiàn)象2

啟動(dòng)后報(bào)錯(cuò)類似如下:

PHP Warning:  stream_socket_server(): unable to connect to tcp://xx.xx.xx.xx:xxx (Cannot assign requested address) in /home/GatewayWorker/Workerman/Worker.php on line xxxx

關(guān)鍵字:Cannot assign requested address

失敗原因:

啟動(dòng)腳本ip參數(shù)寫錯(cuò),不是本機(jī)ip,請(qǐng)?zhí)顚懕緳C(jī)ip機(jī)或者填寫 0.0.0.0(表示監(jiān)聽本機(jī)所有ip)即可解決。

提示:Linux系統(tǒng)可以通過命令 ifconfig查看本機(jī)所有網(wǎng)卡ip。

如果您是騰訊云用戶,注意您的公網(wǎng)ip實(shí)際是代理服務(wù)器ip,公網(wǎng)ip并不屬于你的服務(wù)器,所以無法通過公網(wǎng)ip綁定,但是可以通過0.0.0.0來綁定。

現(xiàn)象3

啟動(dòng)后報(bào)錯(cuò)類似如下:

Waring stream_socket_server has been disabled for security reasons in ...

失敗原因:

stream_socket_server 函數(shù)被php.ini禁用

解決方法

1、運(yùn)行php --ini 找到php.ini文件

2、打開php.ini找到disable_functions一項(xiàng),將stream_socket_server禁用項(xiàng)刪掉

現(xiàn)象4

啟動(dòng)后報(bào)錯(cuò)類似如下:

PHP Warning:  stream_socket_server(): unable to connect to tcp://0.0.0.0:xxx (Permission denied)

失敗原因

linux下監(jiān)聽端口如果小于1024,需要root權(quán)限。

解決辦法

使用大于1024的端口或者使用root用戶啟動(dòng)服務(wù)。

現(xiàn)象5

啟動(dòng)后報(bào)錯(cuò)類似如下:

WebSocket connection to 'ws://x.x.x.x:2346/' failed: Error in connection establishment:net::ERR_NAME_NOT_TIMED_OUT

失敗原因

服務(wù)器防火墻擋住了設(shè)置的端口,這里于2346為例。

解決辦法

進(jìn)入Linux vim編輯服務(wù)器防火墻文件,添加你需要開發(fā)的服務(wù)器端口保存后重啟防火墻。

[root@iZwz9xxxxxxxxxxxxxxxxxx conf]# iptables -nvl  #查看允許訪問的端口

[root@iZwz9xxxxxxxxxxxxxxxxxx conf]# vim /etc/sysconfig/iptables   #編輯

[root@iZwz9xxxxxxxxxxxxxxxxxx conf]# /etc/init.d/iptables restart  #重啟

workerman無法socket的解決方法

以上是“workerman無法socket的解決方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI