環(huán)境:
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服務(wù)后導(dǎo)致阿里云與騰訊云的sdk發(fā)生錯誤,分別是:
阿里云提示:RequestCoreException: cURL error: SSL verify failed (1014)
騰訊云提示:Object of class Swoole\Curl\Handler could not be converted to int
百度原因是寶塔默認(rèn)安裝的swoole沒有設(shè)置:curl-native:enabled需要手動安裝swoole并配置上這個設(shè)置,操作大至流程如下:
- 安裝前的準(zhǔn)備:
1.確認(rèn)php的版本是否php 7.4
指令:php -v
如果版本不對,可以到寶塔系統(tǒng)進(jìn)行操作:
網(wǎng)站->PHP命令行版本->選php-74,提交
(注:默認(rèn)可能已經(jīng)是php-74,但要提交才生效)
2.刪除寶塔默認(rèn)安裝的swoole。
指令:php -m確認(rèn)是否已刪除swoole擴(kuò)展
3.確認(rèn)是否安裝了pecl
指令:pecl
如果顯示pecl的幫助文字即是已安裝,如果沒安裝可執(zhí)行以下指令進(jìn)行安裝
pecl安裝指令:
wget http://pear.php.net/go-pear.phar
php go-pear.phar (過程中的所有提示都按回車即可)
yum install php-pear //確認(rèn)pecl是否安裝裝完畢
最后再次嘗試運行pecl指令
安裝swoole:
1.安裝指令:
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
2.指令運行完畢后記錄swoole的安裝路徑
安裝路徑一般會在安裝結(jié)束提示的"Build process completed successfully"下面第一句,例如:Installing ‘/xxx/xxx/xxx/xxx/swoole.so’
3.php.ini的設(shè)置
1. 在寶塔內(nèi)的php配置文件最后添加
[swoole]
extension = /xxx/xxx/xxx/xxx/swoole.so(此處為剛剛記下的swoole路徑)
2. 重新加載配置(在寶塔內(nèi)操作)后運行php -m指令查看是否有swoole擴(kuò)展,如果沒有則需要在php-cli.ini里追加同樣的配置才行。
查看php-cli.ini的指令為:php --ini
設(shè)置完比后重新加載配置或重啟php后(在寶塔內(nèi)操作)即可以在php -m內(nèi)看到swoole
4.作完以上操作后即可在phpinfo()內(nèi)查看到swoole里已經(jīng)包含的curl-native:enabled 阿里云和騰訊云的sdk包即可順暢運行。
附加:
在運行php think swoole時提示“Uncaught Error: Class ‘Swoole\Table’”即是php -m里沒有swoole擴(kuò)展導(dǎo)致的