记录thinkphp6在500状态码下不显示报错信息的处理方法
  t05FPBlF90Vw 2023年11月15日 26 0

开发过程中碰到这种情况,接口可以正常打印数据,但是报错信息不打印,页面显示空白,日志不记录

连接rabbitMQ无法插入记录发现此问题

composer安装amqplib依赖以后连接rabbit,故意用错误连接地址连接,无报错,页面显示空白,检查app_debug与show_error_msg配置,都为true,怀疑是安装依赖导致,在别的方法体内故意语法错误,问题同样存在,奇怪的是不报错的时候,接口可以正常访问,有报错就显示空白页面,去nginx查看请求日志,发现页面500的时候显示空白,200的时候业务正常

记录thinkphp6在500状态码下不显示报错信息的处理方法_php

发现phpstudy会在php版本外记录一个phpLOG文件,里面终于找到报错信息

记录thinkphp6在500状态码下不显示报错信息的处理方法_php_02

记录thinkphp6在500状态码下不显示报错信息的处理方法_php_03

根据路径找到源码文件,json_encode的时候字符编码报错,定位到问题,报错信息转json打印日志的时候报错,导致thinkphp记录日志的步骤无法进行,页面无内容

在Handle.php源码中直接修改添加

/**

* 将获取的服务器信息中的中文编码转为utf-8

* 修复在开启debug模式时出现的Malformed UTF-8 characters 错误

* @access protected

* @param $data array

* @return array 转化后的数组

*/

protected function changeToUtf8(array $data): array

{

foreach ($data as $key => $value) {

$data[$key] = mb_convert_encoding($value, "UTF-8", "GBK, GBK2312");

}

return $data;

}



'Server/Request Data' => $this->changeToUtf8($this->app->request->server()),

再次发起请求,错误信息正常展示


打印$_SERVER内容,发现是系统变量内有微信开发工具的中文path,确定问题源头

删掉微信开发工具path,恢复源码,问题解决

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  NT5NRjELxLp1   18天前   28   0   0 PHP
  iALoCqVB8AGc   2023年12月25日   18   0   0 PHP
  yThMa20bw7iV   2024年02月19日   50   0   0 PHP
  NT5NRjELxLp1   2024年03月14日   52   0   0 PHP