如何提高 WordPress 中的 PHP 内存限制

您的插件无法正常工作。您的网站未加载。您不断看到错误 “Allowed memory size exhausted”,并且它一直说要增加您的 PHP 内存限制。那是什么,你怎么解决它?

PHP 内存限制的存在是为了阻止占用 RAM 的资源使您的网站瘫痪。但有时它也会导致问题,例如当您安装一个需要一点额外资源的插件并最终切断对您网站的访问时。

当您因内存不足而遇到白屏死机时,您需要立即解决此问题。让我们来看看什么是 PHP 内存限制,以及如果达到资源上限如何解决它。

目录

  1. 什么是 PHP 内存限制?
  2. 如何在 WordPress 中增加 PHP 内存限制
  3. PHP 内存限制应该是多少?

什么是 PHP 内存限制?

PHP 内存限制设置您网站上任何脚本可以使用的最大内存量。但这到底是什么意思呢?

您的网站由服务器提供支持,服务器只是用于保持网站后端运行的专用计算机。与普通计算机一样,它们使用处理器、存储和 RAM(也称为内存)等组件。

RAM 是服务器最重要的部分之一。每个程序和应用程序都会占用一点内存。程序越密集,占用的内存就越多。当您的内存不足时,您的网站将运行缓慢甚至拒绝加载。

Web 应用程序(例如 WordPress 插件)是可能占用服务器内存的众多内容之一。通常,这些应用程序占用的空间非常小,除非您的主机给您的内存非常少,否则您永远不会遇到任何问题。

但是,任何 PHP 应用程序的脚本可以在您的服务器上占用多少内存也存在硬性上限。当其中一个脚本超过限制时,您就会开始遇到问题。

您会看到一个带有错误的白屏,它甚至可能阻止访问您的整个站点。

为什么有内存限制?

想象一下您的服务器出了问题。也许一个程序陷入了无限循环,不断占用越来越多的内存,或者攻击者诱骗您安装运行恶意脚本来占用您的所有资源的东西。

当 PHP 进程失控时,内存限制的作用是在一个 PHP 进程使整个服务器崩溃或耗尽当月分配的所有资源之前将其硬停止。

大多数合法的 PHP 脚本都非常小。每个单独的脚本应该只占用少量的 RAM,除非你有一个不寻常的程序,它在一个脚本中需要的资源比大多数程序作为一个整体需要的资源都多。这些类型的插件当然存在,但它们很少见。

如果内存不足,则很可能是 PHP 程序损坏或恶意,因此内存限制错误就会启动。

但有时您确实在使用需要额外内存的大型插件。一些 Web 主机还将 PHP 内存限制设置得非常低,因此即使您没有安装非常耗资源的应用程序,也会导致错误出现。

无论哪种方式,您都会很快遇到内存耗尽错误。

内存耗尽错误

因此,您遇到了 memory exhausted 错误。您可能会遇到带有错误消息的白屏,无论是在整个站点中还是在执行某些功能(如提交表单)时。

wordpress-memory-limit-exhausted-error
WordPress 中出现的内存限制耗尽错误

这是一个严重的问题,尤其是当它影响您的整个网站时。每过一个小时,就会有很多迷路的访客。

罪魁祸首可能是一个非常大或配置错误的插件。由于 WordPress 插件是用 PHP 编码的,因此它们受 PHP 内存限制的约束。

您可以通过逐个禁用您的插件来找到导致问题的插件,直到重新获得对您网站的访问权限。确定它后,检查文档并查看它是否说明了运行需要多少内存。

如果没有迹象表明它应该是一个非常强大的插件,您可能需要向插件开发人员提交票证,因为它可能存在错误。请记住,PHP 内存限制只影响单个脚本,而不会影响整个插件。因此,脚本很有可能陷入无限循环或其他故障。

问题也可能出在您身上。也许您的内存限制设置得太低,因此只有最小的插件才能正常运行。或者,也许您正在尝试安装一个插件,该插件需要您将限制提高到比正常水平更高的水平。

无论哪种情况,您都应该尝试增加 PHP 内存限制。现在让我们向您展示如何做到这一点。


如何在 WordPress 中增加 PHP 内存限制

在做任何事情之前,有一种简单的方法可以检查您当前的 PHP 内存限制,而无需挖掘任何文件。如果您运行的是 WordPress 5.2 或更高版本,请转到后端的 工具 > Site Health。

如果您没有看到它,请安装健康检查和故障排除插件。

site-health-wordpress
在 WordPress 中查看站点运行状况信息

在 Info 选项卡下,您将看到您的 PHP 内存限制。如果它已经设置得相当高,则您的一个插件可能刚刚损坏。

但是,如果您发现它非常低,则需要通过编辑 wp-config.php 文件来增加它。

这并不总是能解决问题。最终,PHP 内存限制由您的 Web 主机决定。有时,您的网站设置为使用的资源少于主机提供的资源,调整您的文件可以解决此问题。但是,如果主机提供的太低,则无论您手动设置数字多高,您都无法实际增加它。

但它值得一试,所以我们现在就去编辑那个文件。

如何通过 FTP 更改 PHP 内存限制

要编辑 wp-config.php 文件,您需要使用 FTP 或 SFTP 访问您的网站。这允许您编辑影响网站运行方式的敏感内部文件。

您只需更改一行,因此应该很容易。首先安装 FileZilla 或您选择的其他 FTP 客户端。它是免费的,所以不用担心。在开始之前,您还应该备份您的网站。在编辑核心文件时,很容易意外损坏某些内容。

打开 FileZilla 并输入您的凭据。片刻之后,您应该连接到您的网站。

单击 public 文件夹并找到 wp-config.php。如果您找不到 public 或 public-html,它可能被称为 root、www 或您网站的名称。

FileZilla wp config
在 FileZilla 中查找 wp-config

打开wp-config.php文件。小心不要编辑除 PHP 内存限制行之外的任何内容,因为这是一个敏感文件,可能会破坏您的网站。查找该条目并根据需要调整其值。如果找不到此条目,请在上方插入以下行:WP_MEMORY_LIMIT

/* That's all, stop editing! Happy publishing. */

define('WP_MEMORY_LIMIT', '256M');
wp memory limit
WP 内存限制,如 wp-config 中出现的那样

更改此处列出的数字,保存文件,然后关闭 FileZilla。全部完成!

如何在 cPanel 中更改 PHP 内存限制

某些主机不允许通过 FTP 编辑文件。相反,他们可能会授予您访问 cPanel 的权限。如果你是这种情况,不用担心 — 你也可以用这种方式改变你的 PHP 内存限制。

第一步:使用主机提供的凭据登录 cPanel。在主屏幕上,您将看到带有 Select PHP Version 按钮的 Software 部分。

cpanel php version
在 cPanel 中选择 PHP 版本

单击它,在屏幕顶部,您将看到 Switch to PHP 选项。向下滚动,直到看到带有下拉菜单的 memory_limit。单击它并将其更改为您想要的设置。单击 Apply(应用),您就完成了所有操作。

并非每个人都会有 Select PHP Version 选项。相反,您可能会看到 MultiPHP Ini Editor。如果是这种情况,您的步骤会有所不同。

MultiPHP Ini Editor in cPanel
cPanel 中的 MultiPHP Ini 编辑器

您需要单击它,然后在下一个窗口中,在配置 PHP INI 基本设置下,您应该打开下拉列表并选择您的域。找到 memory_limit 部分并输入您想要的数字。单击 Apply 以保存更改。

您也可以尝试使用 cPanel 的文件管理器。这与通过 FTP 访问您的网站非常相似。在主页的 Files (文件) 部分下,单击 File Manager(文件管理器)。找到你的 public/public-html 文件夹(或任何可能的名称)并打开 wp-config.php。

找到上一节中概述的 WP_MEMORY_LIMIT 行,然后将数字更改为您想要的数字。保存您的更改并确保应用它们,这就是您需要做的全部工作。


PHP 内存限制应该是多少?

当您更改内存限制时,您的第一个冲动可能是将其设置为 900 MB 或类似的东西 — 尽可能高。但这实际上可能是一个非常糟糕的主意。

如果您网站上的脚本中断,它可能会迅速失控并使您的整个服务器崩溃。即使您的网站托管在功能强大的硬件上,一个脚本占用所有内存仍然可能导致严重问题。

配置错误的脚本异常繁重,但未损坏到足以导致问题的程度,也可能被忽视。大多数 PHP 脚本都非常小,内存限制错误是一个警告信号,表明后端出了问题。将其设置得太高,您可能会在不知情的情况下弄乱脚本,使您的网站陷入困境。

您应该将 PHP 内存限制设置得尽可能低,同时仍然允许您的站点正常运行。

128 MB 是一个很好的基线。这是一个相当大的内存量,可以处理大多数密集型插件。如果您知道您将需要一些额外的功能,那么 256 MB 甚至可以覆盖最重的插件。如果您确定自己拥有真正的动力,那么 512 MB 是您应该将其设置为的绝对最大值。在 90% 的情况下,您永远不需要将内存限制提高到 256 MB 以上。

如果更改内存限制不起作用怎么办?

如果在编辑 PHP 文件后您仍然遇到内存错误,则问题在于以下两个问题之一:您的主机分配的资源非常少,或者您的服务器上的 PHP 脚本占用了太多内存。

同样,您应该检查并禁用您的插件,直到您确定罪魁祸首。对于 128-256 MB 的内存,任何插件都不应该占用如此多的空间,而不在文档中的某处提及它。禁用它并通知插件作者发生了什么。

即使在禁用所有插件后仍然遇到错误?一定是有一些冲突或其他 PHP 应用程序导致了问题。这超出了您自己能够处理的范围,因此请向您的网络主机寻求帮助。

如果问题根本不是插件,则责任可能在于您的主机将内存限制设置得太低。您可能正在使用共享主机,它因分配非常少量的内存而臭名昭著——这是可以理解的,因为如果一个网站使用过多的 RAM,它会使数十个其他网站的整个系统陷入困境。

您唯一的选择是升级到提供更多资源的计划。这最终可能会付出高昂的代价,特别是如果您只是尝试在新站点上安装一个密集的插件。如果您还没有很多访问者,那么通过升级获得的所有其他资源对您没有太大帮助。

总结

PHP 内存限制的存在有一个非常合理的原因:您不希望流氓进程占用的 RAM 超过它们应该占用的 RAM。但是,当您在使用合法插件时达到极限并遇到白屏死机时,这可能会很烦人。

最后,您可以访问多少 PHP 内存取决于您的主机。如果他们把标准定得太低,就不可能提高它。

但是,有时您的网站使用的资源会少于您实际访问的资源。在这种情况下,可以增加您的内存。尝试将其设置为 128 或 256 MB,最多不超过512MB,因为您不希望它太高。

如果这两种方法都不起作用,则可能是缺少分配的资源导致了问题,而不是需要更改的设置。



评论

发表回复

必填项已用 * 标注