安裝 Swoole
如果您不想安裝 Swoole
擴展,您可以使用 Docker
進行開發,EasySwoole
官方提供了符合需求的 Docker 鏡像,
easyswoole/docker 項目內已經為您準備好了各種版本的 Dockerfile
,或直接基于已經構建好的 easyswoolexuesi2021/easyswoole 鏡像來運行。
下載
首先進入 Swoole
的 Github
下載地址: https://github.com/swoole/swoole-src/releases
如果沒有特殊需求,請選擇最新穩定版本開始下載(我這里是穩定版v4.8.13):
## 下載
[root@easyswoole tmp]$ wget https://github.com/swoole/swoole-src/archive/v4.8.13.tar.gz
# 如果使用 github 下載慢,請到 pecl 進行下載
# [root@easyswoole tmp]$ wget https://pecl.php.net/get/swoole-4.8.13.tgz
## 解壓到當前目錄
[root@easyswoole tmp]$ tar -zvxf v4.8.13.tar.gz
## cd 到解壓之后的目錄
[root@easyswoole tmp]$ cd swoole-src-4.8.13/
## 使用 phpize 創建 php 編譯檢測腳本 ./configure
##【注意:需要選擇 php 對應版本的 phpize,這里使用的是絕對路徑,否則編譯安裝無法生效】
[root@easyswoole swoole-src-4.8.13]$ /usr/local/php-8.1.22/bin/phpize
## 創建編譯文件,第一個 --with,后面是 php-config 的所在路徑(這個路徑一般和 php 在同一個目錄) /usr/local/php-8.1.22/bin/php-config,第二個 --enable,是開啟 Swoole 的 ssl 功能,第三個 --enable(可選參數),是開啟 Swoole 支持 http2 相關的功能
[root@easyswoole swoole-src-4.8.13]$ ./configure --with-php-config=/usr/local/php-8.1.22/bin/php-config --enable-openssl --enable-http2
## 編譯 Swoole 并把編譯好的文件移動到 php 的擴展目錄(前面的配置 php 版本的擴展目錄) 需要root權限
[root@easyswoole swoole-src-4.8.13]$ sudo make && make install
## 編譯成功會顯示如下:
Build complete.
Don't forget to run 'make test'.
Installing shared extensions: /usr/local/php-8.1.22/lib/php/extensions/no-debug-non-zts-20160303/
Installing header files: /usr/local/php-8.1.22/include/php/
這個時候已經安裝成功,需要修改 php
配置文件 php.ini
,在最后面增加如下內容:
extension=swoole.so
注意:不知道 php.ini 所在目錄時,您可以通過運行 php --ini
確定。
例如,我這里 php.ini
是在 /usr/local/php-8.1.22/etc
目錄:
[root@easyswoole swoole-src-4.8.13]$ php --ini
Configuration File (php.ini) Path: /usr/local/php-8.1.22/etc
Loaded Configuration File: /usr/local/php-8.1.22/etc/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
成功安裝 Swoole
之后,通過 php --ri swoole
查看 Swoole 擴展
的信息:
[root@easyswoole swoole-src-4.8.13]$ php --ri swoole
swoole
Swoole => enabled
Author => Swoole Team <team@swoole.com>
Version => 4.8.13
Built => Jan 23 2021 18:16:30
coroutine => enabled
epoll => enabled
eventfd => enabled
signalfd => enabled
cpu_affinity => enabled
spinlock => enabled
rwlock => enabled
openssl => OpenSSL 1.0.2k-fips 26 Jan 2017
http2 => enabled
pcre => enabled
zlib => 1.2.7
mutex_timedlock => enabled
pthread_barrier => enabled
futex => enabled
async_redis => enabled
Directive => Local Value => Master Value
swoole.enable_coroutine => On => On
swoole.enable_library => On => On
swoole.enable_preemptive_scheduler => Off => Off
swoole.display_errors => On => On
swoole.use_shortname => On => On
swoole.unixsock_buffer_size => 8388608 => 8388608
到此,Swoole
擴展就安裝完畢。
常見問題
phpize 命令不存在
安裝 phpize
yum install php-devel ## centos
sudo apt-get install php-dev ## ubuntu
提示 swoole.so.so 類似的報錯
說明你的 phpize
版本和 php-config
設定的版本不一致,請重新編譯
phpize
命令也可以使用絕對路徑: php安裝路徑/bin/phpize
用于執行創建編譯文件。
在之后的 --with-php-config
也得使用同樣的路徑: php安裝路徑/bin/php-config
安裝成功 php --ri 沒有 Swoole 擴展信息
說明你的 php
命令行版本,和安裝 Swoole
的 php
版本不一致,可以通過: php安裝路徑/bin/php --ri swoole
進行確認是否安裝成功