文件格式编码格式错误:文章无法更新、缩略图无法显示

nZone 2023年11月14日 共1122字 30行代码 预计5分钟 2 72
阿里云折扣】服务器活动对比【腾讯云秒杀

最近 WordPress 程序是经常出问题,主要是升级到6.4.1版后,我还把php版本升级到了8.2版,主题就不太兼容,经常改动导致出现些莫名其妙的问题。

更新或发布失败。 此响应不是合法的JSON响应

就是在编辑文章或者发布文章时无法保存,提示:“更新或发布失败。 此响应不是合法的JSON响应”,没错,中间是个句号,查询网上文章都没有解决此故障。

网上大多是说这几个解决方式:新版谷腾堡编辑器问题,要禁用,WP Rest API 问题,也禁用,还有伪静态问题,而我的解决方式是文件编码问题。

因为修复文件,顺便改了下文件编码,我把主题里某个文件(先后是 show-useragent.php、functions.php)的编码改成了UTF-8格式,被系统自带的 Notepad++ 这个不良编辑器误导了,应该要选择转为无 BOM 格式编码,改完保存问题解决。

BOM(Byte Order Mark)即字节顺序标记,是 Unicode 字符编码的一种标记形式。在某些文件开头,特别是使用 UTF-8 或 UTF-16 编码时,可能会包含 BOM。

在某些情况下,BOM 可能会导致问题,特别是在处理文件时可能会引入不必要的字符。在一些程序和编辑器中,可以选择是否保存文件时包含 BOM。如果不需要 BOM,可以尝试保存文件时选择不包含字节顺序标记。

Notepad++的命名不是问题,反而 Notepad2 和 Notepad3 的菜单翻译成签名是不太准确,可能习惯选择最简短的 UTF-8 了。

Notepad3 的文件编码

文章列表缩略图无法显示

A TimThumb error has occured
The following error(s) occured: GD Library Error: imagecreatetruecolor does not exist - please contact your webhost and ask them to install the GD library Query String : src=https://www.nzonex.com/file/pic/softapp/Notepad-1.jpg&w=280&h=210&a=&zc=1 TimThumb version : 2.8.14

报错是说 GD 没有加载,我切换为 php7.4 好像可以,好像又没有完全解决,把我搞得一头雾水。

GD(Graphics Draw)库是一个用于动态创建图像的开源图形库。它提供了一组用于图像处理的函数,使开发者能够创建、操作和输出各种类型的图像。GD 库通常与 PHP 集成,可以在服务器端生成图像,例如用于动态生成验证码、缩略图或图表等。

创建一个 PHP 文件,比如 phpinfo.php,并在文件中添加以下内容:

<?php
phpinfo();
?>

没有看到 GD,仔细检查 php8.2,在 php.ini 中发现有个地方写错了。php7.4 版加载的 dll 文件是:php_gd2.dll,php8.2 加载的文件名更改为了:php_gd.dll,而 php.ini 却没有改,导致没有正常加载。

;php7.4
extension=php_gd2.dll

;php8.2
extension=php_gd.dll

;这个没有加,并不影响
extension=gd

;检查正确已开启
allow_url_fopen = On

这是主机系统的提供的商店安装包有错误,于是把 php8.2 重装了几次,问题并没有解决。

排查到是主题问题,于是修改主题目录下的 timthumb-config.php 文件,非本站的外链(外部链接)图片地址域名加上,本站的域名也要加上,这相当于是白名单。

//裁剪外部链接图片
define('ALLOW_EXTERNAL', true);

//不需要裁剪所有外部链接图片
define('ALLOW_ALL_EXTERNAL_SITES', false);  

// 添加外链图片地址域名
if(! isset($ALLOWED_SITES)){
	$ALLOWED_SITES = array (
		'ww1.sinaimg.cn',
		'www.nzonex.com',
		'imgcache.gtimg.cn',
		'hiphotos.baidu.com',
	);
}

改完问题依旧没有解决。

我再检查文件编码,还是编码问题。改为 UTF-8 编码后(不带签名或BOM),问题解决了。

所以,你要是遇到这些莫名其妙的问题,看看最近是不是改了编码格式了呢?

weinxin
公众号
闹着玩下网
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  0   博主  0

    • avatar 夏日博客 来自天朝的朋友 谷歌浏览器 Windows 10 河北省邯郸市永年县 电信

      后台编码大部分都是UTF8格式吧。

        • avatar nZone 博主 来自天朝的朋友 谷歌浏览器 Windows 10 福建省泉州市 移动

          @夏日博客 并不是,而是 ANSI 的居多