在redhat 6.3系統(tǒng)下,安裝php7.3.10后,用最新的workerman-gateway,啟動失敗。
提示端口被占用,但是端口絕對未占用的。
?
經(jīng)過查看日志,未發(fā)現(xiàn)具體原因,請求支援!?。?!
個人感覺與系統(tǒng)有關系,不知道是不是?
?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()
啟動后報錯類似如下:
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
關鍵字: Address already in use
失敗原因:
端口被占用,無法啟動。
可以通過命令netstat -anp | grep 端口號來找出哪個程序占用了端口。 然后停止對應的程序釋放端口解決。
如果不能停止對應端口的程序,可以通過更換workerman的端口解決。
如果是Workerman占用的端口,又無法通過stop命令停止(一般是丟失pid文件或者主進程被開發(fā)者kill了導致),可以通過運行以下兩個命令殺死Workerman進程。
killall php
ps aux|grep WorkerMan|awk '{print $2}'|xargs kill -9
如果確實沒有程序監(jiān)聽這個端口,那么可能是開發(fā)者在workerman里設置了兩個或兩個以上的監(jiān)聽,并且監(jiān)聽的端口相同導致,請開發(fā)者自行檢查啟動腳本是否監(jiān)聽了相同的端口。
?
http://doc.workerman.net/faq/workerman-start-fail.html
感謝大大的回復。但是你說的方法我都試過了。我已經(jīng)排除了其他程序占用端口的可能,因為更換端口也是一樣的問題。感覺是workerman啟動子線程失敗,然后又自動退出。一直循環(huán)啟動。
我用了2臺redhat 6.3的系統(tǒng)都存在一樣的問題。最后不得不換了一臺ubuntu的系統(tǒng),運行完全正常。
因此,我認為可能與系統(tǒng)或某個依賴庫有關系。