安装 Swoole

如果您不想安装 Swoole 扩展,您可以使用 Docker 进行开发,EasySwoole 官方提供了符合需求的 Docker 镜像, easyswoole/docker 项目内已经为您准备好了各种版本的 Dockerfile ,或直接基于已经构建好的 easyswoolexuesi2021/easyswoole 镜像来运行。

下载

首先进入 SwooleGithub 下载地址: 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 命令行版本,和安装 Swoolephp 版本不一致,可以通过: php安装路径/bin/php --ri swoole 进行确认是否安装成功