IIS下程序异常Response处理出错的问题
问题描述: 通过 AJAX请求 控制器 某个 方法 class XxController extends BaseController { ... //更新信息 public function setflag(Request $request) { $id = $request->get('id/d'); if($id > 0){ Db::name('user')->where('uid',$id)->update(['sta1'=>0]); return $this->success(); }else{ return $this->error('删除失败'); } } ... } 方法内使用 Db::name 进行操作。当字段不存在的时候(触发exception)。(上例中的 sta1字段应该是 sta字段) WIN10 IIS10 + PHP7.2.24 + ThinkPHP6.0.2 上 Response 无法返回 Exception 的JSON 响应。报错 Fatal error: Uncaught InvalidArgumentException: Malformed UTF-8 characters, possibly incorrectly encoded in xxx\vendor\topthink\framework\src\think\response\Json.php:50 但是在 windows 系统上的 phpstudy(Apache)环境下,确能够正常返回Exception的JSON结构。
个人倒腾了好久发现,貌似是windows+IIS下,Exception形成了很大的嵌套,导致json_encode报错了。