環境:
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并配置上這個設置,操作大至流程如下:
- 安裝前的準備:
1.確認php的版本是否php 7.4
指令:php -v
如果版本不對,可以到寶塔系統進行操作:
網站->PHP命令行版本->選php-74,提交
(注:默認可能已經是php-74,但要提交才生效)
2.刪除寶塔默認安裝的swoole。
指令:php -m確認是否已刪除swoole擴展
3.確認是否安裝了pecl
指令:pecl
如果顯示pecl的幫助文字即是已安裝,如果沒安裝可執行以下指令進行安裝
pecl安裝指令:
wget http://pear.php.net/go-pear.phar
php go-pear.phar (過程中的所有提示都按回車即可)
yum install php-pear //確認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的安裝路徑
安裝路徑一般會在安裝結束提示的"Build process completed successfully"下面第一句,例如:Installing ‘/xxx/xxx/xxx/xxx/swoole.so’
3.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擴展導致的