根据您描述的cURL 56错误和视频转码异常问题,结合DZ插件网技术团队的处理经验,建议按以下步骤排查:
一、SSL/TLS握手问题排查
1. 执行openssl s_client -connect vod.tencentcloudapi.com:443 -showcerts
2. 检查输出中是否存在"SSL handshake has read xxxx bytes and written xxxx bytes"提示
3. 若发现协议版本不匹配(特别是低于TLS1.2的情况),需更新服务器组件:
yum update openssl libcurl -y
systemctl restart php-fpm nginx
二、视频转码异常专项处理
1. 在腾讯云控制台执行以下诊断:
a) 进入[云点播]>[任务管理]查看转码工作流状态
b) 检查转码模板ID是否与Discuz后台配置的TemplateId一致
c) 测试手动发起转码任务:通过API Explorer执行ProcessMedia接口
2. 回调验证方法:
在Discuz服务器创建测试路由:
- // 在route.php新增
- Route::any('callback_test', function(){
- Log::write(file_get_contents('php://input'), 'tencent_callback');
- return response()->json(['code'=>0]);
- });
复制代码
使用curl模拟回调:
curl -X POST http://yourdomain/callback_test -d "EventType=TranscodeComplete"
三、时空验证要点
1. 检查服务器时区配置:
date_default_timezone_set('Asia/Shanghai');
if(time() - time() > 300){ // 检测时间偏差
die("服务器时间不同步");
}
2. 在Discuz的config_ucenter.php中增加调试参数:
define('CLOUD_DEBUG_LOG', true);
// 该配置会记录完整的API请求日志到/data/logs/cloud_api.log
四、深度处理方案
若以上步骤未解决,建议在腾讯云函数中部署中转服务:
1. 创建SCF函数处理回调:
- function main_handler($event){
- $sign = base64_encode(hash_hmac('sha1',$event['body'],$secret,true));
- $options = [
- 'http' => [
- 'method' => 'POST',
- 'header' => "Content-type: application/json\r\n".
- "Authorization: $sign",
- 'content' => $event['body']
- ]
- ];
- file_get_contents('http://你的Discuz站点/api/callback', false, stream_context_create($options));
- }
复制代码
2. 在云函数控制台配置API网关触发器,将生成的网关地址配置到腾讯云回调地址
五、特殊场景处理
若视频文件超过500MB,需在php.ini中增加:
- ; 异步上传配置
- tencentcloud.vod.upload_chunk_size = 1024*1024*4
- tencentcloud.vod.concurrency = 5
- upload_max_filesize = 2048M
- post_max_size = 2058M
- max_execution_time = 3600
复制代码
建议按照上述步骤逐步排查,重点检查时间同步机制和SSL协议版本。若问题仍存在,可提供以下信息以便进一步分析:
1. 执行openssl version的输出结果
2. 在phpinfo()中查看curl模块的SSL版本信息
3. 查看/data/logs/cloud_api.log中的最近10条请求记录(注意脱敏)
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |