TP5接口出错只能返回500
问题概述
使用TP框架写接口,接口错误会抛出相应的http状态码和其他信息,本地测试正常,部署到服务器上的就不行了
解决流程
自己在配置文件中改写了excepiton_handle的对象,能根据接口属性返回不同的http状态码,本地开发使用phpstudy,服务器是Apache,线上服务器是nginx,刚开始觉得是nginx的配置有问题,以为是nginx接管了异常处理,网上搜答案无结果,深吸一口气,冷静下,下一步就开始看TP异常处理的源码,最终使用的是json()这个函数,我直接在接口中使用这个函数是可以改变http状态码的,当时心想要不把接口都改成return json;的形式,这样做虽然可以实现功能,但是修改成本有点大,还是继续思考问什么线上的项目会出现这样的问题吧,慢慢的发现,线上服务器并没有修改异常处理,使用的还是TP默认的,这个可能就是问题出现的原因,进配置文件看下配置是没有问题的,难道是linxu和windows的文件分割符不同造成的,是了改成linux的分割符,没用,然后对比发现目录发现文件夹exception,我在使用的时候写成了Exception,这中情况在windows是没有问题的,但是在linux中是不行的,汗
感悟
- 在中间解决问题的过程中想到过这种问题是自己以前没有接触过的,要不要找个人问下,但最终还是憋住了,现在想下别人很大可能解决不了,别人提出的解决方案我在网上都找过了,程序问题千奇百怪,慢慢分析才是王道
- 没有迁就,要是中途想着把所有的接口都改成用json函数这样的形式就不会解决这个问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)