WordPress上传图片时遇到HTTP错误的解决办法

在使用WordPress的过程中,可能会遇到一些不同的错误。其中,在我们将图像和其他类型的文件上传到媒体库时,有时会发生WordPress HTTP错误。如下图所示:

上传文件遇到 http 错误

那么,我们该如何解决这个 WordPress http 错误?导致错误的原因可能很多,但是按照下面说的9种办法依次进行排查,应该可以处理问题。

解决方案1:确认HTTP错误

有时,服务器中的临时故障可能会导致WordPress HTTP错误。在尝试本文中的任何解决方案之前,首先应该确保错误是否始终存在。

首先等待几分钟,然后再次上传媒体文件。如果第二次尝试成功,则可能意味着在错误发生时出现了暂时性问题。

此外,修改文件名,清楚掉一些特殊字符和符号, 比如撇号、分号、乱码字符等,最好只包含数字和字母,然后再上传试试。文件名包含特殊字符是很容易导致问题的。

题外话:尽可能使用中文或特殊字符命名文件,会为以后的维护带来麻烦: 因为编码问题,有时换主机时怎站搬家时,会出现中文名字的图片无法显示,出现乱码问题(一般长远来说,上传到主机的文件最好保持为英文命名,兼容性好) 。如果你很懒手动去修改文件名中的中文,可以使用 Wenprise Pinyin Slug:文件名、网址转拼音或英文

如果问题仍然存在,请继续尝试下面的方案。

解决方案2:切换浏览器

WordPress HTTP错误很可能与网站无关,可能是浏览器意外发生的结果。

有报告称,使用Google Chrome浏览器时会弹出HTTP错误。虽然它是一个出色的浏览器,但切换到其他浏览器可以让您确认问题是否与浏览器有关。

如果问题仍然存在,请继续往下。

解决方案3:停用插件

如果安装插件后出现WordPress HTTP错误,则最好的办法是将其停用。为了节省您的麻烦,已知图像优化插件可能会导致此问题。因此,如果您有图片优化插件,请暂时将其禁用,然后再次尝试上传图片。

如果HTTP错误消失,则可以尝试寻找替代的图像优化器插件。或者,您可以尝试与插件开发人员联系,以进一步解决错误。

但是,如果即使禁用所有插件后错误仍然存​​在,请继续下面提供的更多解决方案。

解决方案4:增加WordPress内存限制

wp-config.php 在网站根目录

WordPress中HTTP错误的常见原因是内存不足。它还可能导致许多其他问题,例如503服务不可用错误。要解决内存不足问题,只需在wp-config.php 文件中添加以下代码 :

define ('WP_MEMORY_LIMIT', '256M');

上面的代码将您的PHP内存限制增加到256MB。在添加之前,您还应该通过检查PHP info来确认服务器上的最大可用内存限制。因为如果PHP内存限制为64M,那么即使你通过上面的代码定义WP的内存限制为256M,它也是不会生效的。

解决方案5:将GD设置为默认图像处理库

WordPress默认可以使用Imagick或GD库处理图像。尽管它们都很出色,但Imagick却因为耗尽可用内存并导致HTTP错误而臭名昭著。

为避免此问题,需要将GD库设置为默认编辑处理库。只需将下面的代码放到主题的  functions.php 文件中即可:

function hs_image_editor_default_to_gd( $editors ) {
    $gd_editor = 'WP_Image_Editor_GD';
    $editors = array_diff( $editors, array( $gd_editor ) );
    array_unshift( $editors, $gd_editor );
    return $editors;
}
add_filter( 'wp_image_editors', 'hs_image_editor_default_to_gd' );

保存更改,然后尝试再次上传图像。如果HTTP错误仍然存​​在,请还原代码更改,然后尝试下一个解决方案。

解决方案6:编辑.htaccess

如果你使用的是Apache环境,可以尝试通过.htaccess文件处理问题。 .htaccess文件一般在你的WordPress根目录(见上面的图片),并作为各种事情的看门人。它控制请求在许多其他功能中的去向。

要修复WordPress中的HTTP错误,请打开.htaccess并添加以下代码:

SetEnv MAGICK_THREAD_LIMIT 1

完成后,尝试再次上传文件看下问题是否已解决。如果不起作用,则可以测试更多代码片段:

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

或者

# 从身份验证中排除文件上传和WP CRON脚本
<FilesMatch "(async-upload\.php|wp-cron\.php|xmlrpc\.php)$">
Satisfy Any
Order allow,deny
Allow from all
Deny from none
</FilesMatch>

尝试单独添加它们,保存更改,然后再次上传媒体文件。如果还是不行,请往下看。

解决方案7:检查主题

如果在安装或更新WordPress主题后出现错误,则主题可能是罪魁祸首。一个好的方法切换到WP默认自带的官方主题。如果更换主题就恢复正常了,说明可能是之前的主题单独存在问题,也可能是主题与插件之间的不兼容。 可以尝试和主题作者联系和反馈问题。

解决方案8:检查您的PHP版本

WordPress 5.2版开始,WordPress需要PHP 5.6.20 或更高版本才能平稳运行。没有达到这个要求可能会导致HTTP错误。有些主机空间默认使用旧版本的PHP,这意味着无论您尝试什么,都无法将图像上传到WordPress媒体库。

该怎么办?首先,登录虚拟主机控制面板,查看是否有可以切换PHP版本的功能,如果有,尝试切换到符合要求的PHP版本。如果没有,请与您的主机商联系,以确保他们使用的是 PHP 5.6.20 及更高版本。

解决方案9:清除缓存

尝试上述所有解决方案后,您还会遇到WordPress HTTP错误吗?也许您之前已经解决了该错误,但是您看到的“错误”来自本地缓存。在您认为没有解决方案可用了的时候,可以尝试清除浏览器缓存。

拓展阅读:

错误是生活中不可避免的一部分,但解决错误才是真正的挑战。以下列出了众所周知的WordPress错误,并提供了详细的故障排除步骤:

倡萌

一个文科IT宅男,喜欢折腾WordPress和被它折腾 ^_^

3 条评论

  1. 昨天刚好遇到个站长有这个问题,我也排查了下,刚好跟你这个文章点是一样的,结果还死没解决,我怀疑跟他使用盗版主题有关……

    1. 如果说要找盗版主题和插件,我想我的能力可能要比很多人都好,但是我一直坚持不用盗版。出于学习和测试的必要,我偶尔也会尝试去找盗版的东西看下,但是说真的,盗版的东西,很多都是有恶意代码和后门的。为什么这么多人就是不明白这点呢?

      1. 哈哈,我也经常会测试,但是自己用的都是正版!因为很多人认为自己的网站不值,他们的观点偏差很大,很多人重视域名、重视服务器、重视第三方测速(实际速度又不管),就是不重视自己的网站内容和安全……

发表评论