在centOS上安裝swoole,使用websocket功能
今天因為工作上的需求,需要安裝swoole這個東西,因為對系統不熟,對swoole也不熟,所以碰到一些問題,google後解決了,筆記一下避免之後再犯。
首先根據官網的方式安裝swoole
pecl install swoole
安裝完畢後要要在php.ini中加入
extension=swoole.so
但是我在/etc/php.ini加入卻跑出以下錯誤
Unable to load dynamic library 'swoole.so' (tried: /usr/lib64/php/modules/swoole.so (/usr/lib64/php/modules/swoole.so: undefined symbol: php_sockets_le_socket), /usr/lib64/php/modules/swoole.so.so (/usr/lib64/php/modules/swoole.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
後來查詢之後才發現不知道是php7.2.8還是centOS的設定問題,extension的設定方式變成要在/etc/php.d 下新增設定檔。
設定方法如下
1.新增一個 80-swoole.ini (數字部分是為了載入時的排序,有相依的extension時要注意順序)
2.打開檔案,輸入 extension=swoole
3.存檔離開。
之後使用php -m就可以看到swoole被載入了。
實際運行之後又發現了一個新的問題,在websocket的connections這個屬性完全為空,所以也無法做訊息的傳送,在查詢後發現原因出在這個功能需要pcre,而我的主機沒有安裝。
yum install pcre-devel
#ubuntu
apt-get install pcre-dev
之後重新安裝swoole就可以正常運作了。