原因分析:
由于使用了宝塔,宝塔默认安装swoole的openssl版本是1.0.2u,这个版本的openssl就会报这个错
解决方案:
升级openssl版本并重新编译安装swoole,参考链接:链接: https://github.com/swoole/swoole-src/issues/4262
这里是宝塔centos系统,所以下面按照centos操作来
具体过程:
一 .检查swoole引用的openssl版本
输入php --ri swoole
看到openssl是1.0.2的,这个版本就是要升级的,如果不是的话下面就不用看了
二 .检查系统openssl版本
由于上次安装swoole时引入的openssl版本过低,后期可能系统openssl版本升级后swoole的openssl并不会跟着升级,导致看到的版本跟系统版本不一致。
输入openssl version
看到版本是1.1.1,这个版本是可以的,如果系统版本也是1.0.2的话就需要先升级openssl版本(自己找系统openssl升级教程)
三.重新编译安装swoole
卸载swoole,重新编译安装,这里是把原先php一键安装的扩展swoole卸载了先,并且删除php配置文件里的swoole。
1.下载swoole源码,随便选一个就行
- https://github.com/swoole/swoole-src/releases
- https://pecl.php.net/package/swoole
- https://gitee.com/swoole/swoole/tags
2.上传到服务器或宝塔的对应php文件里,并解压,文件名swoole-src
3.编译安装
-
打开目录
cd ./swoole-src
-
生成编译检测脚本
phpize
-
编译配置检测
./configure --enable-openssl --with-openssl-dir=/usr/local/opt/openssl --enable-http2 --with-php-config=/www/server/php/80/etc/php-config
注意:
./configure
配置需要根据实际情况填写,此处只添加--enable-openssl
,其它忽略 ,运行前先查看swoole配置项,确认没问题再执行。
--with-openssl-dir
跟--with-php-config
的值可能根据你的环境不同会不一样,如果是宝塔的话应该直接复制就行了。--with-openssl-dir
是openssl的系统路径,--with-php-config
是php的路径
4.编译安装sudo make && sudo make install
4.在php.ini文件中加入extension=swoole.so
,然后重启php。打开终端再次输入php --ri swoole
显示1.1.1代表更新成功
关于修改phpini后不生效
可能是宝塔的php配置文件跟实际引入的不一样,查看php.ini位置php --ini | grep 'Loaded Configuration File'
,我这里并没有php-cli.ini,所以我直接创建了一个,然后把php.ini配置复制进去,重启php就好了