每天早上一睁眼,习惯性的打开手机看客户群里有没有反馈或是发现新的bug,对于bug早已司空见惯,任何开发者都不欢迎这讨人恨的东东。

今天虽然是周末也是开学季(好像发现了什么,^_^),但也不例外,每天早上第一件事就是查看有没有新出炉的bug(我也不想写bug,之前写项目老是粗心,没有去年的细致,具体原因不细表)。

打开微信,按照习惯查看新信息,一看到客户截图显示服务器异常,心里凉凉了,因为跟IOS和安卓沟通好了的如果HTTP状态码为500就提示‘服务器异常’或‘网络错误’,这种情形第一时间想到的是又出bug了?但细想又不对,随即打开小程序(这个客户有三个端),我勒个去,一切正常,WTF,玩我呢。

有一个很简单排查(丢锅)的方法,如果前端出现一样的错误,大概率是后台的锅,反之,如果前端同一个操作或功能一个正常一个不正常,大概率是前端自己的锅。



这次应该不是我的锅了吧!然后打电话询问一下是怎么回事,把经过叙述一遍,安卓也懵逼了,不会呀,大家都没改动。二话不说就开始排查错误。

这种情况只需要再调一次API就知道了。很多时候,大家只关心API返回的错误码或状态码,都忽略了HTTP的状态码,如果返回了数据,就直接拿数据。(ps:API的状态有的人放在header里面,有的人放在返回结构里面,也有的人直接用HTTP状态码,优劣各自评断)

安卓告诉我拿到数据了,但是HTTP状态码是500,WTF,这什么操作,服务端用的TP5,如果返回500的话会抛出异常的,因为出现500或5XX大多数是语法错误,这种情况下不可能有数据的,深思之下想到了6月也遇到过这种错误,当时是用postman测试的,HTTP500但有数据,当时只是用屏蔽错误的方法应急了一下,难道是同一个原因?不管那么多,让APP正常运转再说。

按照上次的解决办法,我在同一返回的方法里面加上了

       error_reporting("E_ALL");
        ini_set("display_errors", 1);

        header("HTTP/1.1 200 {$msg}"); // ok 正常访问

但是这样也不行呀,必须得找出缘由,随即向老大请教了一番

以下是对话




查看了一下这个文件,是写入日志


导致错误的根源就是

return error_log($message, 3, $destination);

在记录错误日志的时候出现了错误,然鹅翻了TP5的日志一无所获,然后


再然后


就没有了,




最后修改:2019 年 09月 01日 15:59:54

文章声明:非特殊说明,本文版权归 凌萍分享 所有,转载请注明出处
本文标题:TP5解决HTTP状态码500但正常返回结果
本文标签:tp,HTTP
如果觉得本篇文章对你有用,请随意赞赏;赞赏将用于服务器、域名开支