使用技巧

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

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

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

下面,我们将探讨为什么会发生此错误,以及如何解决该错误,以便您可以重新上传媒体。

什么是WordPress HTTP错误?

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

非常模糊的“ HTTP错误”绝对不能帮助您确定可能出问题的地方,甚至不能从哪里开始寻找。但这是因为可能有几种原因导致失败,而WordPress根本不知道为什么,所以它吐出了一条通用错误消息(如下所示)。

上载图片时出现WordPress HTTP错误

上载图片时出现WordPress HTTP错误

如何修复WordPress HTTP错误

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

以下是一些建议和要纠正错误的检查内容(按我们看到的最常见原因排序):

1.刷新页面

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

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

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

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

您的会话已过期

您的会话已过期

很自然,您重新登录并尝试再次上传媒体。但是,发生HTTP错误。这有点像WordPress。重新登录后,您实际上需要手动刷新正在浏览的页面。然后,上传媒体将再次起作用。

2.缩小或调整文件大小

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

我们在Kinsta网站上使用 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会将其读为一个单词,这可能会损害您的SEO

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

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

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

4.暂时停用插件和主题

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

如果您不想影响实时站点,只需将实时站点克隆到暂存环境。如果分阶段也发生WordPress HTTP错误,那么您可以快速 停用所有插件以缩小范围。

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

停用所有插件

停用所有插件

如果这样可以解决问题,则需要找到罪魁祸首。开始一个接一个地激活它们,然后尝试再次将图像上载到媒体库中。当看到HTTP错误返回时,您发现了行为异常的插件。然后,您可以联系插件开发人员寻求帮助,或在WordPress存储库中发布支持票证。

如果您无法访问管理员,则可以通过FTP进入服务器,然后将plugins文件夹重命名为plugins_old。然后再次检查您的站点。如果可行,则需要一个接一个地测试每个插件。重命名您的插件文件夹plugins,然后逐个重命名其中的每个插件文件夹,直到找到为止。您也可以先尝试在临时站点上复制此文件  。

重命名插件文件夹

重命名插件文件夹

WordPress主题也是如此。通常,主题与媒体库无关,但是我们已经看到了一些奇怪的设置。尝试将您的主题切换到默认的“二十十七岁”主题以查看是否可以解决该问题,这无济于事。就像插件一样,您不必担心丢失当前的主题设置。所有这些都存储在WordPress数据库中

5.询问您的WordPress主机

如果您已经尝试了上述步骤,但仍然收到WordPress HTTP错误,建议在继续操作之前先向WordPress主机寻求帮助。许多其他的故障排除步骤要高级一些,很多时候您可以要求主机为您做一遍或进行检查。

从MyKinsta仪表板的右下角可以看到Kinsta的支持团队24×7。

Kinsta WordPress托管支持

Kinsta WordPress托管支持

6.增加PHP内存限制

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

Kinsta客户端的默认内存限制已设置为256 MB。如果将您的WordPress网站托管在Kinsta,那么内存不足应该不会有任何问题。👍

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

您可以通过将以下代码添加到文件中来增加PHP内存限制wp-config.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开发人员设置的最低要求。😮

遇到停机和WordPress问题吗?Kinsta是旨在节省您时间的托管解决方案!查看我们的功能

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

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

更改为PHP 7.4

更改为PHP 7.4

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

选择PHP版本

选择PHP版本

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

PHP 7的cpanel

cPanel中的PHP 7

9.解决Imagick和共享主机的性能问题

WordPress使用两种不同的PHP模块进行图像处理:GD库和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 worker的限制。作为网站所有者,您不必担心这些类型的事情。

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

了解更多有关Kinsta与您尝试过的其他主机的不同之处。

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

很有可能是您的媒体库路径未正确设置。当用户将其本地开发站点迁移到生产环境时,通常会看到这种情况。如果您在WordPress信息中心的“设置”下的“媒体”中查看并看到列出的文件路径值,请继续删除它,然后单击“保存更改”。您希望将媒体存储在默认/wp-content/uploads文件夹中。

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

WordPress媒体设置

WordPress媒体设置

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

我们始终建议您使用企业级且价格适中的WAF(例如SucuriCloudflare)代替。您可以在此处阅读有关最佳WAF设置的建议。

12.安装从服务器添加插件

最后但并非最不重要的一点是,如果您确实处于绑定状态,并且似乎没有其他工作,则可以安装免费的“从服务器添加” 插件。也许您正在等待WordPress主机或开发人员对如何解决WordPress HTTP错误做出回应。

从服务器添加WordPress插件

从服务器添加WordPress插件

“添加到服务器”插件通常会带您解决错误,并且可能是一个不错的临时解决方法,尤其是在您遇到重要问题的时候。它最初是为了允许您通过SFTP添加非常大的文件而开发的。 重要提示:该插件已不再维护或受支持。使用风险自负。