framework
framework copied to clipboard
修复debug模式下编码问题导致的json_encode失效问题'
如果计算机名为中文(本地开发常见)。在debug开启的模式下,会因为编码问题导致json_decode()失效,而报‘’Malformed UTF-8 characters‘’的错误,会看不到具体的报错信息。
我也存在这个问题,但官方为什么不更新?
修改的不对,你这样修改有问题, 如果要改也是该这个地方:
public static function __make(App $app)
{
$request = new static();
if (function_exists('apache_request_headers') && $result = apache_request_headers()) {
$header = $result;
} else {
$header = [];
$server = $_SERVER;
foreach ($server as $key => $val) {
if (0 === strpos($key, 'HTTP_')) {
$key = str_replace('_', '-', strtolower(substr($key, 5)));
$header[$key] = $val;
}
}
if (isset($server['CONTENT_TYPE'])) {
$header['content-type'] = $server['CONTENT_TYPE'];
}
if (isset($server['CONTENT_LENGTH'])) {
$header['content-length'] = $server['CONTENT_LENGTH'];
}
}
$request->header = array_change_key_case($header);
$request->server = $_SERVER;
$request->env = $app->env;
$inputData = $request->getInputData($request->input);
$request->get = $_GET;
$request->post = $_POST ?: $inputData;
$request->put = $inputData;
$request->request = $_REQUEST;
$request->cookie = $_COOKIE;
$request->file = $_FILES ?? [];
return $request;
}
但你最好检查一下你的环境,这个是来自$_SERVER的,最好不要因为这种情况修改核心框架,
你可以尝试在入口文件运行框架前,修改$_SERVER这个全局变量,看看是否能解决问题.
碰见同样问题了 仅在这个电脑 win10
@augushong 请问这是修改的那个文件?
Reuqest的对象类。
修改make方法。
打印了下serve 发现path 里面有个微信开发者工具的dll 删了 重启了下环境 就好了