如何修复将图像上传到WordPress媒体库时提示HTTP Error

错误类型:
WP内部错误
错误名称:
HTTP错误
英文名称:
HTTP Error
错误描述:
当尝试使用内置媒体库工具上传图像或视频时出现问题时,会发生WordPress HTTP错误。不幸的是,与我们通常可以引用HTTP状态代码的浏览器错误不同,WordPress错误有时更难解决(特别是如果您不知道如何启用WordPress调试模式)。

如何修复将图像上传到WordPress媒体库时提示HTTP Error

与任何平台一样,总会有那些烦人的错误或问题,您必须学习如何解决。相信我们,我们几乎都见过他们!从死亡白屏数据库连接错误,WordPress肯定有它的怪癖。但我们仍然喜欢它!今天我们将深入探讨一种更常见的问题,即HTTP错误。用户在尝试将图像或视频上传到WordPress媒体库时通常会遇到这种情况。

虽然HTTP错误通常很容易修复,但它可能会令人沮丧,因为它通常会中断您的工作流程。没有什么比花20分钟试图为您的博客文章找到完美图像更糟糕的了,您去上传它,然后砰,您突然遇到了一个非常模糊的错误。

下面我们将探讨发生此错误的原因以及您可以采取哪些措施来快速解决该错误,以便您可以重新上传媒体。

什么是HTTP Error?

当尝试使用内置媒体库工具上传图像或视频时出现问题时,会发生WordPress HTTP错误。不幸的是,与我们通常可以引用HTTP状态代码的浏览器错误不同,WordPress错误有时更难解决(特别是如果您不知道如何启用WordPress调试模式)。

非常含糊的“HTTP Error”绝对不能帮助您确定可能出错的地方,甚至无法确定从哪里开始查找。但那是因为失败可能有几个原因,而WordPress根本不知道为什么,所以它会吐出一条通用错误消息(如下所示)。

上传图片时WordPress提示HTTP Error

上传图片时WordPress提示HTTP Error

如何修复WordPress网站HTTP Error

根据我们的经验,WordPress HTTP错误通常源于两个方面:第一个是客户端或用户错误 (您的登录会话、文件名中的错误字符等),第二个是您的WordPress主机 (服务器问题、内存列表、第三方插件、共享主机限制资源等)。所以我们将深入探讨两者。

以下是修复错误的一些建议和检查事项(按我们看到的最常见原因排序):

  1. 刷新页面
  2. 缩小或调整文件大小
  3. 重命名图像文件
  4. 暂时停用插件和主题
  5. 询问您的WordPress主机
  6. 增加PHP内存限制
  7. 检查上传文件夹权限
  8. 移至最新版本的PHP
  9. 修复Imagick和共享主机的性能问题
  10. 删除自定义媒体库路径
  11. 禁用mod_security
  12. 安装添加到服务器插件

1.刷新页面

遇到WordPress HTTP错误时,您应该做的第一件事就是在浏览器中刷新页面。听起来太容易了吧?嗯,实际上这是我们见过的最常见的修复方法。原因如下:

首先,无论出于何种原因,您的浏览器可能暂时失去了与WordPress的连接,并且该过程根本无法完成。这可能是由于您的ISP、您的WordPress主机的临时故障等。如果您刷新页面并尝试再次上传,错误有时会自行解决。

其次,我们还看到有时在刷新页面或从另一个选项卡返回WordPress编辑器后,它会突然将您踢出局。这很可能表明您的WordPress登录会话已过期。您应该会看到以下消息:

您的会话已过期。请登录以从上次停止的地方继续。

您的会话已过期

您的会话已过期

很自然地,您重新登录并尝试再次上传您的媒体。但是,发生HTTP错误。这是WordPress的一个怪癖。重新登录后,您实际上需要手动刷新您所在的页面。然后上传媒体将再次工作。

2. 缩小或调整文件大小

您可能需要编辑图像文件,这可能需要减小文件大小(KB或MB)或减小宽度/高度(像素)。我们建议查看我们关于如何优化图像的深入文章。当您的图像上传到媒体库时,您可以使用许多第三方图像优化插件来自动执行此操作(缩小和调整大小)。

您可以使用Imagify,一款很不错的插件。但也有很多其他可选。只需确保无论您使用哪个插件,它们都是在自己的服务器上优化图像,而不是在本地。如果您在本地批量优化图像,这可能会严重损害您网站的性能。

WordPress插件-Imagify

WordPress插件-Imagify

上传高分辨率图像是可以的,因为WordPress支持开箱即用的响应式图像。事实上,您可能希望图像在视网膜显示器上看起来清晰。但是,除非您的摄影师或企业需要高分辨率图像,否则一个好的经验法则是将最终图像大小保持在100KB 以下,并且不超过网站内容div宽度的两倍。

此外,您可能必须使用PNG和JPG文件类型。有时一个可能比另一个大得多,这取决于它是什么类型的图像。

根据您的WordPress主机的配置,您可能还需要考虑增加WordPress最大上传文件大小

3.重命名图像文件

尝试重命名图像文件永远不会有什么坏处。如果您尝试上传重复的文件名,WordPress应自动在末尾附加一个数字,但如果这不起作用,请尝试重命名您的文件。不幸的是,WordPress不允许您重命名已上传图像文件的文件,因此您需要在本地重命名并重新上传。

当我们上传已经存在的图像时,我们通常会在末尾添加-1或-2(例如:image-file-1.png、image-file-2.png)。确保添加破折号,否则Google会将其视为一个词,这可能会影响您的SEO。

此外,为安全起见,请避免上传文件名包含特殊字符的图像。这包括国际语言符号和字符,例如撇号。破折号没问题。建议一般情况下使用英语或者拼音作为文件名,而不是特殊字符。虽然WordPress在技术上可以支持这些,但还有很多其他问题可能会出现。

重命名没有特殊字符的图像文件

重命名没有特殊字符的图像文件

4. 暂时停用插件和主题

如果您遇到HTTP错误,请尝试停用插件,甚至将WordPress主题切换为默认主题,看看是否能解决问题,这总是一个好主意。一些典型的罪魁祸首包括图像优化插件(它们直接与媒体库相关联)和安全插件,如WordFence(这些插件有时过于严格)。或者您可以简单地删除您的WordPress主题。

如果您不想影响您的实时站点,只需将您的实时站点克隆到临时环境即可。如果登台时也发生WordPress HTTP错误,那么您可以快速停用所有插件以开始缩小范围。

请记住,如果您只是停用插件,您不会丢失任何数据。如果您仍然可以访问您的管理员,一个快速的方法是浏览到“插件”并从批量操作菜单中选择“停用”。这将禁用您的所有插件。

停用所有插件

停用所有插件

如果这解决了问题,您将需要找到罪魁祸首。开始一一激活它们,然后尝试再次在媒体库中上传图像。当您看到HTTP错误返回时,您就发现了行为不端的插件。然后,您可以联系插件开发人员寻求帮助或在WordPress插件库中发布支持工单。

如果您无法访问WordPress管理后台,您可以通过FTP进入您的服务器并将您的插件文件夹重命名为plugins_old. 然后再次检查您的网站。如果它有效,那么您将需要一个一个地测试每个插件。将您的插件文件夹重命名回plugins,然后将if it中的每个插件文件夹重命名,直到找到为止。您也可以先尝试在临时站点上复制此内容  。

重命名插件文件夹

重命名插件文件夹

您的WordPress主题也是如此。通常主题不与媒体库相关联,但我们已经看到了一些奇怪的设置。尝试将您的主题切换到默认的二〇二二主题以查看它是否修复它永远不会有什么坏处。就像使用插件一样,您不必担心丢失当前的主题设置。所有这些都存储在WordPress数据库中。

5. 询问您的WordPress主机

如果您已经尝试了上述步骤但仍然收到WordPress HTTP错误,我们建议您在继续之前联系您的WordPress主机寻求帮助。许多额外的故障排除步骤都更高级一些,很多时候您可以要求您的主机为您执行或检查。

6.增加PHP内存限制

导致WordPress HTTP错误的另一个原因是您的服务器缺乏用于后台上传过程成功完成的可用内存。这是共享 WordPress 托管的一个非常常见的问题。要修复它,您需要增加PHP可以使用的内存量, 建议使用256 MB。

使用wp-config.php增加PHP内存限制

您可以通过将以下代码添加到您的文件wp-config.php增加PHP内存限制。注意:这可能会被您的WordPress主机的服务器级规则覆盖。

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

增加cPanel中的PHP内存限制

如果您的主机使用cPanel,您可以在两个不同的方法增加PHP内存限制

第一个是在软件部分下。单击“选择PHP版本”。单击“切换到PHP选项”。然后您可以单击“memory_limit”来更改其值。

第二个也是也在软件部分下。单击“MultiPHP INI编辑器”工具。这允许您修改php.ini文件。只需向下滚动到显示“memory_limit”的位置并输入更高的值。

增加cPanel中的PHP内存限制

增加cPanel中的PHP内存限制

使用php.ini增加PHP内存限制

如果您不使用cPanel,您也可以php.ini直接编辑文件(如果您有访问权限)。为此, 请通过FTP或SSH登录到您的站点,转到站点的根目录并打开或创建一个php.ini文件。

无法通过SSH连接?了解如何修复SSH“连接被拒绝”错误

如果该文件已经存在,请搜索“memory_limit”设置并根据需要进行修改。

某些共享主机可能还要求您在.htaccess文件中添加suPHP指令以使上述php.ini文件设置生效。为此,请编辑.htaccess同样位于站点根目录下的文件,并将以下代码添加到文件顶部:

<IfModule mod_suphp.c> 
suPHP_ConfigPath /home/yourusername/public_html
</IfModule>

使用 .htaccess增加PHP内存限制

.htaccess文件是一个特殊的隐藏文件,其中包含可用于修改服务器行为的各种设置,一直到目录特定级别。如果您无权访问php.ini,我们建议您接下来尝试此操作。首先, 通过FTP或SSH登录您的站点,查看您的根目录,看看那里是否有.htaccess文件。

如果有,您可以编辑该文件并修改“php_value memory_limit”值。

7.检查上传文件夹权限

通常,当出现文件夹权限错误时,您应该在WordPress中收到一条消息,说明它无法写入目录。然而,情况可能并非总是如此。如果WordPress网站被黑客入侵或感染了恶意软件,则权限可能会出现很多问题。

您关心的主要文件夹是您的/wp-content/uploads文件夹,因为这是通过媒体库上传文件时存储的位置。

根据WordPress Codex,所有目录都应该是755 (drwxr-xr-x) 或750。

您可以使用FTP客户端轻松查看文件夹权限(如下所示)。您还可以联系您的WordPress主机支持团队,并要求他们快速获取文件夹和文件的GREP文件权限,以确保它们设置正确。

确保如果您手动更新此文件夹的权限,请同时选中“递归到子目录”选项以及“仅应用于目录”。

WordPress上传目录权限

WordPress上传目录权限

8. 迁移到最新版本的PHP

WordPress官方推荐PHP 7.3或更高版本。如果您没有运行它,那么您就低于CMS开发人员设定的最低要求。

我们始终建议运行最新和受支持的PHP版本,因为它提供了更好的安全性和性能,包括错误修复和需要弃用的功能。

我们已经看到旧版本的PHP导致各种错误,包括臭名昭著的WordPress HTTP错误。在宝塔面板,您只需在宝塔面板仪表盘左侧“网站”菜单,找到你需要切换PHP版本的网站,然后点击“设置”操作。

宝塔面板网站管理

宝塔面板网站管理

在弹出窗口中,点击PHP版本,然后在PHP版本下拉菜单中选择你所需的版本即可。

宝塔面板切换PHP版本

宝塔面板切换PHP版本

如果您的主机使用cPanel,他们可能已经为您提供了一个选项来更改您的PHP版本。只需登录cPanel,然后在“软件”类别下单击“选择PHP版本”。

选择PHP版本

选择PHP版本

然后,您可以选择您的主机支持的可用PHP版本。

cPanel中的PHP 7

cPanel中的PHP 7

9. 修复Imagick和共享主机的性能问题

WordPress有两种不同的PHP模块用于图像处理:GD Library和Imagick (ImageMagick)。根据您的服务器上安装的内容,WordPress可能会使用任何一种。

问题是共享的WordPress主机在幕后有很多隐藏的资源限制。这是他们在同一台机器上塞满这么多用户的唯一方法。人们遇到的一个常见问题是分配给Imagick (ImageMagick) 的资源太少。主机将限制使用多线程的能力,从而导致WordPress HTTP错误。

您可以将以下代码添加到 的顶部.htaccess file,将线程限制值更改为更高的值。

MAGICK_THREAD_LIMIT 1

您的另一个选择是告诉WordPress使用GD库而不是Imagick。您只需将以下代码添加到您的主题functions.php文件即可。

function wpb_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’, ‘wpb_image_editor_default_to_gd’ );

我们会直言不讳。如果您必须进行此类调整,则是时候迁移到新的WordPress主机了。而且在大多数情况下,您只受到PHP worker的限制。作为网站所有者,您不必担心这些类型的事情。

10.删除自定义媒体库路径

很可能是您的媒体库路径设置不正确。当用户将他们的本地开发站点迁移到生产时,我们通常会看到这一点。如果您查看WordPress仪表盘中“设置”下的“媒体”并看到列出的文件路径值,请继续删除它并单击“保存更改”。您希望将媒体存储在默认/wp-content/uploads文件夹中。

下面是它通常的样子。如果您没有看到库路径,那么您在这里都很好。

WordPress媒体设置

WordPress媒体设置

11. 禁用mod_security

Mod_security是一个开源防火墙,有时可能会导致WordPress HTTP错误发生。您可以通过将以下代码添加到.htaccess文件顶部来禁用mod_security 。

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

如果您使用的是cPanel,您还可以通过单击“安全”部分中的“ModSecurity”来禁用它。

cPanel ModSecurity

cPanel ModSecurity

然后将状态从“打开”切换到要禁用它的域旁边的“关闭”。

禁用mod_security

禁用mod_security

我们始终建议使用企业级且价格合理的WAF,如Sucuri或Cloudflare。

12.安装Add From Server插件

最后但并非最不重要的一点是,如果您真的陷入困境并且似乎没有其他任何工作,您可以安装免费的Add From Server 插件。也许您正在等待WordPress主机或开发人员关于如何解决WordPress HTTP错误的响应。

WordPress插件-Add From Server

WordPress插件-Add From Server

添加到服务器插件通常会让您绕过错误,并且可能是一个很好的临时修复,特别是如果您正处于重要事情的中间。它最初的开发目的是允许您通过SFTP添加非常大的文件。 重要提示:此插件不再维护或支持。使用风险自负。

小结

如您所见,有多种不同的方法可以修复WordPress HTTP错误。希望上述解决方案之一对您有用,并且您已经回到正轨并上传媒体。如果您一次又一次地继续收到此错误,则可能是时候考虑升级到更好的WordPress主机了。

评论留言