laravel 缓存配置之后出现 __set_state 错误的解决办法

当使用 php artisan config:cache 后,出现:

Call to undefined method Closure::__set_state()

经过排查,是配置文件(config 目录下)中使用了闭包(函数),我的例子是使用 laravel-sms 时,遇到以下代码:

/*
    |--------------------------------------------------------------------------
    | 验证码短信通用内容
    |--------------------------------------------------------------------------
    |
    | 如需缓存配置,则需使用 `Toplan\Sms\SmsManger::closure($closure)` 方法进行配置
    |
    */
'content' => function ($code, $minutes, $input) {
    return '【signature】您的验证码是' . $code . ',有效期为' . $minutes . '分钟,请尽快验证。';
},

为了解决该问题,按照配置中的提示,修改为以下代码即可:

'content' => Toplan\Sms\SmsManager::closure(function ($code, $minutes, $input) {
    return '【signature】您的验证码是' . $code . ',有效期为' . $minutes . '分钟,请尽快验证。';
}),

注意: 提示中的单词 Manager 拼错了,少写了一个 a

余下配置中还有其他的闭包函数,使用相同的方法修改。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

20 + 6 =