记录一下,之前也没有这个问题,更新系统后突然出现的。
问题
PHP Warning: PHP Startup: Unable to load dynamic library 'swoole.so'
root@VM-0-7-ubuntu:~# php -m
PHP Warning: PHP Startup: Unable to load dynamic library 'swoole.so' (tried: /usr/lib/php/20210902/swoole.so (/usr/lib/php/20210902/swoole.so: undefined symbol: curl_multi_ce), /usr/lib/php/20210902/swoole.so.so (/usr/lib/php/20210902/swoole.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
原因
在 php.ini
中配置扩展会优先于 conf.d
目录下配置文件加载,而swoole扩展依赖curl和socket扩展,因此需要在其后加载,因此不能在 php.ini
中添加 extension=swoole.so
,而是在 conf.d
目录中添加。
解决
在PHP的模块目录添加 swoole.ini
。
vim /etc/php/8.1/mods-available/swoole.ini
添加如下内容:
;configuration for php swoole module
;priority=20
extension=swoole.so
最后运行以下命令:
sudo phpenmod swoole
更简单的方法
不要通过 pecl install swoole
这个方式,直接安装php扩展就行: apt install php8.x-swoole
(适用php8.1 和 8.2)。