PHP实现短信发送_阿里云腾讯云SDK接口对接流程【操作】

酷强吖_2375

酷强吖_2375

2026-05-05

751人浏览

原创

阿里云短信SDK命名空间冲突需分版本解决:PHP 7.4+用composer require alibabacloud/sdk并统一use AlibabaCloud\SDK\Dysmsapi\V20170525\DysmsapiClient;低版本PHP须改namespace为Aliyun*并避免手动require。

php实现短信发送_阿里云腾讯云sdk接口对接流程【操作】

阿里云短信 SDK 安装与命名空间冲突怎么解

阿里云老版 PHP SDK(dysms_php.zip)不支持 Composer 自动加载,直接 require 会因 Aliyun\Core\Config 和 Aliyun\Api\Sms\Request\V20170525\SendSmsRequest 等类路径错乱报 Class not found。新版官方推荐用 alibabacloud/sdk,但要注意兼容性断层:

  • PHP 7.2+ 才能用 alibabacloud/sdk v2.x;PHP 5.6–7.1 只能退回到 aliyuncs/aliyun-sdk(已归档,无维护)
  • aliyuncs/aliyun-sdk 的 DefaultProfile::addEndpoint() 在 PHP 8.0+ 会触发 Deprecated: Required parameter $region follows optional parameter $product
  • 若项目用了 ThinkPHP,把 SDK 放进 extend/Aliyun/ 后,必须统一改所有 namespace 为 Aliyun\*,否则 use Aliyun\Core\DefaultProfile 会找不到类

最稳的解法是:PHP 7.4+ 直接 composer require alibabacloud/sdk,删掉所有手动 require,用 use AlibabaCloud\SDK\Dysmsapi\V20170525\DysmsapiClient; 走新版客户端。

腾讯云 SmsSingleSender 发送失败常见错误码含义

调用 SmsSingleSender->send() 返回 JSON 后 $json['result'] !== 0 是常态,但错误信息藏得深:

  • "result":1014 表示签名未审核通过——不是“没填”,而是控制台里签名状态仍是“审核中”
  • "result":1025 是模板参数个数不匹配,比如模板写的是「验证码{1},有效期{2}分钟」,但传的 $params = ["1234"] 少了一个
  • "result":1019 多见于测试阶段:手机号被腾讯云风控拦截,需在控制台「短信管理 → 黑白名单」里加白
  • 注意 $ssender->send() 第一个参数是 $type(0=普通短信,1=营销短信),营销短信必须提前报备模板,否则返回 1023

别依赖 $json['errmsg'] == "OK" 判断成功——腾讯云有些错误仍返回 "OK",但 "result" 非 0,务必校验 result 字段。

两个平台都绕不开的签名与模板审核时效

阿里云和腾讯云对签名和模板都走人工审核,但节奏不同:

腾讯云harness最佳实践-skills
腾讯云harness最佳实践-skills

把一个已有 git 仓库装配成"TAPD 故事 → feature 分支 → PR → CNB AI 代码评审 → 合入 main → TAPD 故事自动回写 commit"的闭环工程挽具(harness)。适用于腾讯云 CNB(cnb.cool)+ TAPD 组合的团队。触发场景:(1) 用户要求把 git 仓库接入 CNB 和/或 TAPD;(2) 要求 commit/PR 自动关联 TAPD 故事;(3) 要求启用 CNB AI 代码评审(cnbcool/ai-review);(

下载
  • 阿里云签名通常 1–2 小时出结果,模板快则 15 分钟,慢则 24 小时;若填了“网站备案号”,必须和 ICP 备案信息完全一致(连空格、中英文括号都不能差)
  • 腾讯云签名审核更严,要求提供可访问的官网截图+域名归属证明;模板若含“抽奖”“返利”等词,大概率驳回,得改成“互动活动”“用户回馈”再试
  • 测试期别用真实手机号反复提交——阿里云对同一号码 1 小时内最多发 5 条,腾讯云限制为 10 条,超限后该号码当日收不到任何短信

上线前至少预留 1 个工作日跑完签名→模板→接口联调全链路,别卡在审核环节等上线时间。

生产环境密钥泄漏风险怎么控

硬编码 $accessKeyId 和 $appKey 在代码里是最高危操作,尤其当项目上 Git 或交由第三方运维时:

  • 阿里云必须用子账号 + RAM 策略限定仅 Dysmsapi:SendSms 权限,主账号 AK 绝对禁止写进代码
  • 腾讯云 SDK 不支持从环境变量自动读取 appid/appkey,得自己封装一层:getenv('TENCENT_SMS_APPID') ?: include 'config/sms.php'
  • ThinkPHP 项目建议把密钥放 config/sms.php 并加入 .gitignore;Laravel 用 .env + config/services.php 注入
  • 如果用 CI/CD 流水线,密钥必须设为 secret 变量,禁止 echo 输出或写入日志——曾有团队因 error_log($appKey) 导致密钥泄露被刷光余额

哪怕只是本地测试,也别图省事把密钥贴在 sendSms.php 顶部。多一步配置,少三天救火。

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

12104

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

6921

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2195

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

4408

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

5114

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

4031

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

5817

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

4562

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

12402

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习