调用Laravel REST API出现SERVICE UNAVAILABLE错误,清缓存仍未解决
1. 验证维护模式是否彻底关闭
- 手动检查项目根目录
storage/framework/路径下是否存在down文件,部分场景下php artisan up执行异常不会自动删除该文件,如存在直接手动删除即可 - 确认
.env配置中APP_DEBUG临时设置为true,开启详细报错展示,避免异常被框架默认转为503状态码
2. 排查表单请求校验类异常
你的代码中注入了自定义表单请求类RegistrationValidate,该类异常会提前终止请求:
- 临时将控制器方法参数替换为
Illuminate\Http\Request $request,跳过自定义校验逻辑,测试接口是否可正常响应。如果恢复正常,需检查RegistrationValidate的authorize方法是否返回了false,或是校验规则、自定义校验逻辑抛出了未捕获异常 - 确认请求头携带
Accept: application/json,API请求未带该头时,部分异常处理逻辑会将报错转为非预期的状态码
3. 排查控制器代码逻辑错误
你提供的代码存在明确的风险点:
- 未定义变量风险:代码中的
$fileName没有赋值逻辑,若上传门店logo的处理逻辑缺失,直接调用未定义变量会抛出错误,生产环境下会被转为503 - 检查
$this->clientToken()方法是否存在、是否能正常返回字符串,该方法抛出异常会直接终止请求 - 检查
User模型的$fillable属性是否已经包含username、email、full_name、store_name、store_logo、password字段,未加入的字段会触发批量赋值异常,生产环境下转为503
4. 排查路由与中间件拦截
- 检查
routes/api.php中该路由所属的分组,是否配置了自定义维护校验、权限拦截类中间件,提前返回了503状态码 - 检查
app/Http/Kernel.php中注册的全局中间件,是否存在IP拦截、域名校验等逻辑直接返回503
5. 日志定位最终错误
直接查看storage/logs/laravel.log日志文件,筛选调用注册接口时间点对应的报错栈,可直接定位具体错误原因。
内容的提问来源于stack exchange,提问作者abu abu
相关产品推荐
相关产品推荐

