Laravel执行php artisan serve报RateLimiter非静态方法静态调用错误怎么解决
问题解决方案
错误原因
你当前导入的RateLimiter类为底层实现类Illuminate\Cache\RateLimiter,该类的for()方法是实例方法,不支持静态调用,Laravel官方提供了对应的门面类用于支持这种静态调用写法。
修复步骤
- 打开
app/Providers/RouteServiceProvider.php文件,修改头部的类导入语句 - 将原本的
RateLimiter导入行替换为:
use Illuminate\Support\Facades\RateLimiter;
- 同步确认另外两个依赖类的导入语句是否正确:
use Illuminate\Cache\RateLimiting\Limit; use Illuminate\Http\Request;
- 保存文件后重新执行
php artisan serve即可正常启动服务。
异常排查
如果修改后仍然报错,可排查两项内容:
- 你的项目Laravel版本是否≥8.0,
RateLimiter::for()语法是Laravel 8版本才新增的速率限制写法,更低版本无法支持该语法 - 确认项目中没有自定义的同名
RateLimiter类覆盖了官方门面类
内容的提问来源于stack exchange,提问作者noxter
相关产品推荐
相关产品推荐

