在redhat 6.3系統(tǒng)下,安裝php7.3.10后,用最新的workerman-gateway,啟動(dòng)失敗。
提示端口被占用,但是端口絕對(duì)未占用的。
?
經(jīng)過查看日志,未發(fā)現(xiàn)具體原因,請(qǐng)求支援?。。。?br />
個(gè)人感覺與系統(tǒng)有關(guān)系,不知道是不是?
?Fatal error: Uncaught Exception: Address already in use in /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php:2208
Stack trace:
#0 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1473): Workerman\Worker->listen()
#1 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1320): Workerman\Worker::forkOneWorkerForLinux(Object(GatewayWorker\Gateway))
#2 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1294): Workerman\Worker::forkWorkersForLinux()
#3 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1624): Workerman\Worker::forkWorkers()
#4 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1573): Workerman\Worker::monitorWorkersForLinux()
#5 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(511): Workerman\Worker::monitorWorkers()
#6 /sh/wang/GatewayWorker/start.php(37): Workerman\Worker::runAll()
#7 {main}
? thrown in /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php on line 2208
Fatal error: Uncaught Exception: Address already in use in /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php:2208
Stack trace:
#0 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1473): Workerman\Worker->listen()
#1 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1320): Workerman\Worker::forkOneWorkerForLinux(Object(GatewayWorker\Gateway))
#2 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1294): Workerman\Worker::forkWorkersForLinux()
#3 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1624): Workerman\Worker::forkWorkers()
#4 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1573): Workerman\Worker::monitorWorkersForLinux()
#5 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(511): Workerman\Worker::monitorWorkers()
#6 /sh/wang/GatewayWorker/start.php(37): Workerman\Worker::runAll()
#7 {main}
? thrown in /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php on line 2208
Fatal error: Uncaught Exception: Address already in use in /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php:2208
Stack trace:
#0 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1473): Workerman\Worker->listen()
#1 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1320): Workerman\Worker::forkOneWorkerForLinux(Object(GatewayWorker\Gateway))
#2 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1294): Workerman\Worker::forkWorkersForLinux()
#3 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1624): Workerman\Worker::forkWorkers()
#4 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1573): Workerman\Worker::monitorWorkersForLinux()
#5 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(511): Workerman\Worker::monitorWorkers()
#6 /sh/wang/GatewayWorker/start.php(37): Workerman\Worker::runAll()
#7 {main}
? thrown in /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php on line 2208
Fatal error: Uncaught Exception: Address already in use in /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php:2208
Stack trace:
#0 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1473): Workerman\Worker->listen()
#1 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1320): Workerman\Worker::forkOneWorkerForLinux(Object(GatewayWorker\Gateway))
#2 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1294): Workerman\Worker::forkWorkersForLinux()
#3 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1624): Workerman\Worker::forkWorkers()
#4 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(1573): Workerman\Worker::monitorWorkersForLinux()
#5 /sh/wang/GatewayWorker/vendor/workerman/workerman/Worker.php(511): Workerman\Worker::monitorWorkers()
#6 /sh/wang/GatewayWorker/start.php(37): Workerman\Worker::runAll()
啟動(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 ...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
如果確實(shí)沒有程序監(jiān)聽這個(gè)端口,那么可能是開發(fā)者在workerman里設(shè)置了兩個(gè)或兩個(gè)以上的監(jiān)聽,并且監(jiān)聽的端口相同導(dǎo)致,請(qǐng)開發(fā)者自行檢查啟動(dòng)腳本是否監(jiān)聽了相同的端口。
?
http://doc.workerman.net/faq/workerman-start-fail.html
感謝大大的回復(fù)。但是你說的方法我都試過了。我已經(jīng)排除了其他程序占用端口的可能,因?yàn)楦鼡Q端口也是一樣的問題。感覺是workerman啟動(dòng)子線程失敗,然后又自動(dòng)退出。一直循環(huán)啟動(dòng)。
我用了2臺(tái)redhat 6.3的系統(tǒng)都存在一樣的問題。最后不得不換了一臺(tái)ubuntu的系統(tǒng),運(yùn)行完全正常。
因此,我認(rèn)為可能與系統(tǒng)或某個(gè)依賴庫(kù)有關(guān)系。