安装 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
进行确认是否安装成功