需先通过composer安装overtrue/easy-sms包,再在config/sms.php中配置网关参数并设置.env环境变量,最后为thinkphp 6.1+注册easysmsserviceprovider服务提供者。

如果您在ThinkPHP项目中需要集成短信发送能力,但尚未安装Overtrue EasySms包,则可能是由于依赖未引入或配置缺失导致短信功能无法启用。以下是完成该集成的步骤:
一、通过Composer安装EasySms包
EasySms是基于Composer管理的PHP短信发送组件,必须使用Composer命令在项目根目录下执行安装,以确保自动加载机制与ThinkPHP 6+的依赖体系兼容。
1、打开终端(命令行),进入您的ThinkPHP项目根目录(即包含think可执行文件和composer.json的目录)。
2、执行以下命令安装最新稳定版EasySms:
composer require overtrue/easy-sms -vvv
3、等待安装完成,确认控制台输出包含Installing overtrue/easy-sms及依赖解析成功提示。
二、创建并配置sms.php配置文件
ThinkPHP不默认提供EasySms配置文件,需手动创建标准配置以指定网关、超时、策略等参数,否则调用时将抛出配置缺失异常。
1、在config/目录下新建文件:sms.php。
2、向该文件写入以下基础配置内容(以云片网关为例):
return [ 'timeout' => 5.0, 'default' => [ 'strategy' => OvertrueEasySmsStrategiesOrderStrategy::class, 'gateways' => ['yunpian'], ], 'gateways' => [ 'yunpian' => [ 'api_key' => env('YUNPIAN_API_KEY', ''), ], 'errorlog' => [ 'file' => runtime_path('log/easy-sms.log'), ], ], ];
3、在.env文件中添加对应环境变量:
YUNPIAN_API_KEY=your_actual_api_key_here
三、注册服务提供者(适用于ThinkPHP 6.1+)
为支持容器自动注入与统一管理,需显式注册EasySms服务类,否则app()->make()或依赖注入将无法解析EasySms实例。
1、在app/provider/目录下新建EasySmsServiceProvider.php文件。
2、写入以下服务提供者代码:
app->singleton(EasySms::class, function ($app) { return new EasySms(config('sms')); }); $this->app->bind('easysms', EasySms::class); } }
3、编辑config/app.php,在providers数组中追加:
'app\provider\EasySmsServiceProvider'
四、验证安装与基础调用
配置生效后,可通过控制器或命令行快速验证包是否可正常初始化并调用发送逻辑,避免因路径、命名空间或配置加载顺序引发静默失败。
1、在任意控制器方法中加入以下测试代码:
$sms = app('easysms'); var_dump($sms instanceof OvertrueEasySmsEasySms);
2、若输出bool(true),说明实例创建成功。
3、进一步测试网关可用性(请替换为已实名认证的测试手机号):
$sms->send('13800138000', ['template' => 'SMS_123456', 'data' => ['code' => '1234']]);
五、处理常见安装异常
Composer安装或运行时出现报错,通常由PHP版本不匹配、扩展缺失或权限问题引起,需逐项排查而非重试安装命令。
1、若提示Your requirements could not be resolved,检查当前PHP版本是否≥7.2(执行php -v确认)。
2、若报错cURL extension is required,启用PHP的curl扩展(Linux修改php.ini取消;extension=curl注释;Windows检查ext/php_curl.dll是否存在并启用)。
3、若runtime/log/目录不可写,导致日志写入失败,执行(Linux/macOS):
chmod -R 755 runtime/
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











