开发过程中碰到这种情况,接口可以正常打印数据,但是报错信息不打印,页面显示空白,日志不记录
连接rabbitMQ无法插入记录发现此问题
composer安装amqplib依赖以后连接rabbit,故意用错误连接地址连接,无报错,页面显示空白,检查app_debug与show_error_msg配置,都为true,怀疑是安装依赖导致,在别的方法体内故意语法错误,问题同样存在,奇怪的是不报错的时候,接口可以正常访问,有报错就显示空白页面,去nginx查看请求日志,发现页面500的时候显示空白,200的时候业务正常
发现phpstudy会在php版本外记录一个phpLOG文件,里面终于找到报错信息
根据路径找到源码文件,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,恢复源码,问题解决