环境:
centos8
宝塔7.9.3
php 7.4
swoole 4.8.11
代码框架:tp6+swoole
aliyuncs/oss-sdk-php 2.5.0
qcloud/cos-sdk-v5 2.5.9
问题:
使用了swoole http服务后导致阿里云与腾讯云的sdk发生错误,分别是:
阿里云提示:RequestCoreException: cURL error: SSL verify failed (1014)
腾讯云提示:Object of class Swoole\Curl\Handler could not be converted to int
百度原因是宝塔默认安装的swoole没有设置:curl-native:enabled需要手动安装swoole并配置上这个设置,操作大至流程如下:
安装前的准备:
安装swoole:
安装指令:
swoole 4.8安装指令
pecl install -D ‘enable-sockets=“yes” enable-openssl=“yes” enable-http2=“yes” enable-mysqlnd=“yes” enable-swoole-json=“no” enable-swoole-curl=“yes” enable-cares=“yes”’ https://pecl.php.net/get/swoole-4.8.11.tgz
=====================================================================
swoole 5.0安装指令:
pecl install --configureoptions ‘enable-sockets=“yes” enable-openssl=“yes” enable-http2=“yes” enable-mysqlnd=“yes” enable-swoole-json=“yes” enable-swoole-curl=“no” enable-cares=“yes”’ https://pecl.php.net/get/swoole-5.0.0.tgz
指令运行完毕后记录swoole的安装路径
安装路径一般会在安装结束提示的"Build process completed successfully"下面第一句,例如:Installing ‘/xxx/xxx/xxx/xxx/swoole.so’
php.ini的设置
1. 在宝塔内的php配置文件最后添加
[swoole]
extension = /xxx/xxx/xxx/xxx/swoole.so(此处为刚刚记下的swoole路径)
2. 重新加载配置(在宝塔内操作)后运行php -m指令查看是否有swoole扩展,如果没有则需要在php-cli.ini里追加同样的配置才行。
查看php-cli.ini的指令为:php --ini
设置完比后重新加载配置或重启php后(在宝塔内操作)即可以在php -m内看到swoole
4.作完以上操作后即可在phpinfo()内查看到swoole里已经包含的curl-native:enabled 阿里云和腾讯云的sdk包即可顺畅运行。
附加:
在运行php think swoole时提示“Uncaught Error: Class ‘Swoole\Table’”即是php -m里没有swoole扩展导致的