thinkphp6在nginx下突然报500错误,也没有提示错误(代码问题而不是服务器的问题)
2022-11-24 11:10:29
214
{{single.collect_count}}

在入口文件或执行方法中加入一下2行代码

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

再次执行会报一下错误

Uncaught InvalidArgumentException: Malformed UTF-8 characters

这个问题当你使用apache是正常的,使用nginx就会报错

解决方法:
找到文件vendor/topthink/framework/src/think/exception/Handle.php
添加一下方法

/** * 将获取的服务器信息中的中文编码转为utf-8 * @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;}

修改同文件180行处
在这里插入图片描述

这样就可以正常的输出错误提示

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}