php - 阿里云通信新的SDK总是报错误 无法 getProfile

查看:625
本文介绍了php - 阿里云通信新的SDK总是报错误 无法 getProfile的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

使用阿里云通信新的SDK,将SDK集成到composer中进行安装的。

类的加载都没有任何的问题,能够正确使用,但是在继续到下面的时候出现了错误:

//初始化访问的acsCleint
   $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
   DefaultProfile::addEndpoint("cn-hangzhou","cn-hangzhou", $product, $domain);

报错信息是:

我输出了一下,其中 self::$endpoints 的值是 null。

我的函数的完整代码如下:

public function smsNew($data=[]){
           //此处需要替换成自己的AK信息
           $accessKeyId = Config::get('alidayu.appkey');
           $accessKeySecret = Config::get('alidayu.secretKey');
           //短信API产品名(短信产品名固定,无需修改)
           $product = "Dysmsapi";
           //短信API产品域名(接口地址固定,无需修改)
           $domain = "dysmsapi.aliyuncs.com";
           //暂时不支持多Region(目前仅支持cn-hangzhou请勿修改)
           $region = "cn-hangzhou";
           //初始化访问的acsCleint
           $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
           DefaultProfile::addEndpoint("cn-hangzhou","cn-hangzhou", $product, $domain);
           $acsClient= new DefaultAcsClient($profile);
           $request = new SendSmsRequest();
           $request->setPhoneNumbers($data['mobile']);
           //必填-短信签名
           $request->setSignName(Config::get('alidayu.FreeSignName'));
           //必填-短信模板Code
           $request->setTemplateCode($data['template']);
           //选填-假如模板中存在变量需要替换则为必填(JSON格式)
           $request->setTemplateParam(json_encode($data['param']));
           //选填-发送短信流水号
           // $request->setOutId("1234");
           //发起访问请求
           $acsResponse = $acsClient->getAcsResponse($request);
           dump($acsResponse);
           return $acsResponse;
    }

我的accesskey 和 secretKey 是在 Access Key管理 处生成的,可用。

=============================

刚才测试一下,在demo中是能够发送短信的,在框架中无法使用。

解决方案

我的加载方式直接就是将sdk放在了vendor中,利用框架的自动加载来完成即可。出现错误的原因和加载方式无关。

阿里云-云通信在帮助手册中给的demo代码是不能直接复制使用的,我就犯了这个问题。

比较帮助手册中给的demo代码和sdk中的demo代码会发现不同的地方在于:

sdk的demo中有一个加载区域节点配置,而帮助手册中的demo是没有的。

use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest;

// 加载区域结点配置
Config::load();

因此在我上面出错的代码中,最前面应当手动的加载区域节点配置

 \Aliyun\Core\Config::load();

这篇关于php - 阿里云通信新的SDK总是报错误 无法 getProfile的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆