分类
WordPress

WordPress 上传文件出错

在 IIS8.5 中运行 WordPress 时,遇到上传图片出错的问题:此响应不是合法的 JSON 响应。

按 F12 打开开发者工具看了一下,原来是在上传完成图片后返回的 JSON 头部,多一段 HTML 代码:

<head><title>文档已移动</title></head>
<body><h1>对象已移动</h1>可在<a HREF="http://www.ilinshu.cn/wp-json/wp/v2/media/448">此处</a>找到该文档</body>

真正的 JSON 数据在这段 HTML 后面。

经过多方查找资料,得知这段代码是 IIS 插入的,但是目前没有明确的方法来禁止 IIS 的这一行为。微软曾经提供过一个hotfix,但是已经不再维护了,不适用于 IIS8.5 。微软推荐的解决办法是升级到最新的 Windows 版本,使用 Windows10 或最新的 Windows Server 版本。

话是这样说,但是升级的话,硬件要求最低要2G内存才行,增加了多余的经济负担(主要还是因为穷~)。其实我早就想完全换到 Linux ,但这是不可能的,因为还有一些服务需要 Windows Server 来运行。

其实目前来说,仅有的一个方案就是切换到 Apache,Apache 反向代理 IIS ,统一提供对外的 Web 服务。IIS 只运行 ASP.NET 应用,PHP 通过 Apache 来运行。

方案是可行的,唯一的缺点就是网站的部署稍微麻烦了一点,不过还算可以接受。

参考链接:

https://core.trac.wordpress.org/ticket/46311

https://stackoverflow.com/questions/10594225/prevent-iis-from-changing-response-when-location-header-is-present

https://stackoverflow.com/questions/12074730/w7-pro-iis-7-5-overwrites-php-location-header

https://forums.iis.net/t/1234223.aspx?Python+REST+API+Status+201+Create+IIS+Adds+HTML+To+JSON+Response

2021.11.19更新:目前整个服务器按上面的进行调整部署,现在 WordPress 上传文件的问题已经解决,一切正常平稳运行!

测试了阿里云的 Windows Server 2019,内存占用太高,2G 内存不怎么够用。