如何修复WordPress HTTP错误(将图像上传到媒体库)

与任何平台一样,总有那些烦人的错误或问题需要学习如何完成。相信我们,我们几乎都看到了它们!从白屏死机到数据库连接错误,WordPress肯定有它的怪癖。但我们仍然喜欢它!今天我们将深入研究一个比较常见的 HTTP错误。用户在尝试将图像或视频上传到WordPress媒体库时通常会遇到此问题。

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

下面我们将探讨为什么会出现此错误以及您可以采取哪些措施来快速解决此错误,以便您可以重新上传媒体。

什么是WordPress HTTP错误?

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

非常含糊的“HTTP错误”肯定无法帮助您确定可能出现的问题,甚至无法确定从哪里开始查找。但那是因为失败可能有几个原因而且WordPress根本不知道原因,所以它会吐出一般错误信息(如下所示)。

上传图片时出现WordPress HTTP错误

如何修复WordPress HTTP错误

根据我们的经验,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 登录会话已过期。通常情况下,WordPress会立即将您解雇,但如果您正在上传媒体,它可能不会。重新登录后,您可以再次尝试上传媒体。

2.缩小或调整文件大小

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

如  Imagify

想象一下WordPress插件

想象一下WordPress插件

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

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

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

3.重命名图像文件

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

当我们上传已经存在的图像时,我们通常在末尾添加-1或-2(例如:image-file-1.png,image-file-2.png)。确保添加短划线,否则Google会将其读作一个单词,这可能会损害您的搜索引擎优化。

此外,为了安全起见,请不要上传包含特殊字符的文件名的图像。这包括国际语言符号和撇号等字符。破折号还可以。您可以在下面的示例中看到Kinsta日语站点,我们使用英语作为文件名,而不是特殊字符。虽然WordPress可以在技术上支持这些,但还有很多其他问题可以弹出。

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

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

4.暂时停用插件和主题

如果你有HTTP错误试图停用你的插件甚至将你的WordPress主题切换到默认值以查看是否能解决问题,这总是一个好主意。一些典型的罪魁祸首包括图像优化插件(它们直接绑定到媒体库)和安全插件,如WordFence(这些插件有时限制太多)。

如果您不想影响您的实时网站,只需将您的实际网站克隆到暂存环境即可。如果在暂存时也发生WordPress HTTP错误,那么您可以快速  停用所有插件以开始缩小它。

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

停用所有插件

停用所有插件

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

如果您无法访问管理员,您可以FTP到您的服务器并将您的插件文件夹重命名为plugins_old。然后再次检查您的网站。如果它有效,那么您将需要逐个测试每个插件。重命名您的插件文件夹plugins,然后逐个重命名其中的每个插件文件夹,直到找到它。您还可以尝试 首先在暂存站点上复制此操作  。

重命名插件文件夹

重命名插件文件夹

您的WordPress主题也是如此。通常主题不会与媒体库绑定,但我们已经看到了一些奇怪的设置。尝试将主题转换为默认的Twenty Seventeen主题以确定它是否能够修复它,这绝不会让人痛苦。就像使用插件一样,您不必担心会丢失当前的主题设置。所有这些都存储在数据库中。

5.问你的WordPress主机

如果您已经尝试了上述步骤并且仍然收到WordPress HTTP错误,我们建议在继续之前联系WordPress主机以获取帮助。许多其他故障排除步骤更加先进,很多时候您可以请求主机商为您执行或检查此操作。

6.增加PHP内存限制

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

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

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

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

增加cPanel中的PHP内存限制

如果主机使用cPanel,则可以在两个不同的区域增加PHP内存限制。

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

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

增加cPanel中的PHP内存限制

增加cPanel中的PHP内存限制

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

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

如果文件已经存在,请搜索“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网站遭到黑客入侵或感染了恶意软件,则权限可能会出现很多问题。

厌倦了WordPress托管支持似乎比你知道的少?
我们明白!这就是Kinsta只聘用高技能开发人员和Linux工程师的原因。我们的支持部门的专业知识是首屈一指的,我们可以全天候为您提供帮助!
看看我们的功能
您关注的主文件夹是您的/wp-content/uploads文件夹,因为这是通过媒体库上传文件时的位置。

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

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

如果您手动更新此文件夹的权限,请确保同时检查“Recurse into subdirectories”选项以及“仅应用于目录”。

WordPress上传目录权限

WordPress上传目录权限

8.转到最新版本的PHP

WordPress正式推荐PHP 7.2或更高版本。如果您没有运行,则低于CMS开发人员设置的最低要求。😮

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

我们已经看到旧版本的PHP会导致各种错误,包括臭名昭着的WordPress HTTP错误。在Kinsta,只需单击MyKinsta仪表板,即可轻松更改为PHP 7.2。

更改PHP版本

如果您的主机使用cPanel,他们可能已经有一个选项可供您更改您的PHP版本。只需登录到cPanel,然后在“Software”类别下单击“Select PHP Version”。

选择PHP版本

选择PHP版本

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

php 7 cpanel

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主机了。Kinsta没有像这样的疯狂限制,而且大多数情况下,你只受到PHP工作者的限制。作为网站所有者,您不必担心这些类型的事情。

我们为每个站点使用LXD托管主机和协调的LXC软件容器。这意味着每个WordPress站点都位于自己的隔离容器中,该容器具有运行它所需的所有软件资源(Linux,Nginx,PHP,MySQL)。资源是100%私有的,不会在其他任何人甚至您自己的网站之间共享

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

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

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

<IfModule mod_security.c>
SecFilterEngine关闭
SecFilterScanPOST关闭
</ IfModule>配置

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

cPanel ModSecurity

cPanel ModSecurity

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

禁用mod_security

禁用mod_security

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

12.安装Add From Server插件

最后但并非最不重要的一点是,如果你真的处于绑定状态而其他任何东西似乎都没有工作,你可以安装免费的Add From Server  插件。也许您正在等待WordPress主机或开发人员对如何解决WordPress HTTP错误的响应。

从服务器添加WordPress插件

从服务器添加WordPress插件

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

概要

正如您所看到的,有很多不同的方法可以解决WordPress HTTP错误。希望以上解决方案之一适合您,您已经回到正轨并上传您的媒体。如果您一次又一次地继续收到此错误,则可能需要考虑升级到更好的WordPress主机。

1条评论

  • 评论者 缙哥哥 - 回复

    好文章,学习了!

留下回复

您的电邮不会被公布 必填字段标记为*