[筆記] CentOS 安裝swoole

在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就可以正常運作了。