前置: 最近业务更新迭代过程中,修改了laravel底层的composer包依赖扩展,
发布到生产环境后,框架发生了异常, 无法执行后续业务功能, 但是nginx日志,业务日志完全没有暴露出问题,后续会说明每一个问题点.
- 开发/测试环境没有类似问题产生,只有生产环境.
- 单一摘掉发生异常的一台主机,直接调用;
- 接口调用: curl 响应服务的接口 发现确实返回了框架级异常文案, 但是http的状态码却是200
- 查询nginx access.log 接口状态码200
- 查询fpm相关log 无异常
- 发生了错误没有抛出,肯定是错误设置相关的.
- php -i 查询异常配置
php -i | grep error
- phpfpm -i 处查询异常配置
phpfpm -i | grep error
- diff 本地/测试/生产环境 异常配置
- 发现fpm配置 php_flag[display_errors] 默认值 off 线上 on
- 核对官方手册
php_flag[display_errors] = on,开启它,php语法错误会返回一个空白页,nginx 会认为是一个正常的响应。
- 发现问题,逐台机器/分区更改配置,修复完成