CodeIgniter中创建Twilio Client提示缺少凭证错误的解决方法
问题描述
在CodeIgniter中使用Twilio时触发以下致命错误:
致命错误:未捕获的Twilio\Exceptions\ConfigurationException:在E:\wamp64\www\sms\src\Twilio\Base\BaseClient.php第70行,创建Client需要凭证
尝试过直接在src文件中粘贴sid和token,但问题仍未解决,求修复方案。
附上代码:
require(__DIR__.'./src/Twilio/autoload.php'); use Twilio\Rest\Client; $sid = getenv('xxxxxx'); $token = getenv('xxxxx'); $client = new Client($sid, $token); // 指定E.164格式的电话号码(例如+16175551212) // 此参数为短信接收方号码,需带'+'和国家码 $phoneNumber = "+91xxxx"; // 必须是你拥有的Twilio号码,格式为'+'加国家码 $twilioPurchasedNumber = "+xxxxxx"; // 发送短信 $message = $client->messages->create( $phoneNumber, [ 'from' => $twilioPurchasedNumber, 'body' =>"Hey Jenny! Good luck on the bar exam!" ] ); print("Message sent successfully with sid = " . $message->sid ."\n\n"); // 打印最近10条消息 $messageList = $client->messages->read([],10); foreach ($messageList as $msg) { print("ID:: ". $msg->sid . " | " . "From:: " . $msg->from . " | " . "TO:: " . $msg->to . " | " . " Status:: " . $msg->status . " | " . " Body:: ". $msg->body ."\n"); }
修复方案
修正
getenv()的使用:你现在写的getenv('xxxxxx')是占位符,要么把参数改成实际的环境变量名称(比如TWILIO_ACCOUNT_SID),要么直接替换成真实的凭证值(仅测试环境可用):// 方式1:用环境变量(推荐生产环境) $sid = getenv('TWILIO_ACCOUNT_SID'); $token = getenv('TWILIO_AUTH_TOKEN'); // 方式2:直接写死(仅测试) $sid = "你的Twilio账户SID"; $token = "你的Twilio授权Token";停止修改Twilio源码:直接在src文件里粘贴sid和token完全没用,Twilio客户端是读取你传入的参数,修改源码只会导致后续库升级丢配置,还可能引发其他问题。
CodeIgniter专属配置方式:把凭证放到框架配置文件里更规范,打开
application/config/config.php添加:$config['twilio_sid'] = '你的账户SID'; $config['twilio_token'] = '你的授权Token';然后在控制器/模型里获取:
$sid = $this->config->item('twilio_sid'); $token = $this->config->item('twilio_token'); $client = new Client($sid, $token);验证凭证有效性:确认用的是Twilio控制台仪表盘顶部的真实账户SID和授权Token,别用测试凭证或错误值。
内容的提问来源于stack exchange,提问作者M Surya
相关产品推荐
相关产品推荐

