错误消息"Fatal error: Allowed memory size of XXXXX bytes exhausted"是 WordPress 网站所有者最常遇到的问题之一。这意味着 PHP 尝试使用的内存超过了服务器为单个进程允许的量。本指南涵盖诊断实际内存限制、正确提升限制并验证修复的所有方法——无论您使用的是带 DirectAdmin 的共享主机还是更受限制的环境。

什么是 PHP 内存限制以及为何重要?

PHP 内存限制(memory_limit)是单个 PHP 进程每次请求可消耗的最大内存量。当 WordPress 加载页面、运行定时任务、处理媒体上传或执行复杂数据库查询时,PHP 会为该任务分配内存。如果任何插件或主题需要超过配置限制的内存,PHP 会立即终止执行并抛出致命错误。

大多数 PHP 安装中 memory_limit 的默认值为 128M。对于只有几个插件的轻量级网站来说已经足够。然而,配备了页面构建器、WooCommerce、缓存插件、安全扫描器和 SEO 插件的完整 WordPress 网站,在单次页面加载期间(尤其是涉及管理后台时)很容易超过 128M。

在进行任何更改之前,了解服务器级别限制(在主 php.ini 中设置)、用户级别覆盖(在 .htaccess 或本地 php.ini 中设置)和 WordPress 级别常量(在 wp-config.php 中设置)之间的区别至关重要。PHP 始终应用各层允许值中的最低值。

如何检查当前的内存限制

在修改任何配置文件之前,先确认 PHP 实际执行的限制值。有几种可靠的方法:

方法 1——WordPress 站点健康

在 WordPress 管理后台前往工具 > 站点健康 > 信息 > 服务器。面板显示「PHP 内存限制」(服务器的限制)和「WordPress 内存限制」(WordPress 请求的值)。如果这两个值不同,说明 WordPress 请求的内存超过了服务器允许的量。

方法 2——临时 phpinfo() 文件

在 WordPress 根目录创建名为 info.php 的文件并添加:

<?php phpinfo(); ?>

在浏览器中访问 https://yourdomain.com/info.php 并搜索 memory_limit。您将看到「本地」值(当前有效)和「主」值(服务器默认值)。检查后立即删除该文件——将 phpinfo() 公开访问是安全风险。

方法 3——DirectAdmin PHP 配置

登录 DirectAdmin 并前往进阶功能 > PHP 配置。当前 memory_limit 会显示出来,通常可以直接从此面板更改,无需编辑任何文件。

方法 4——WP-CLI

如果您有服务器的 SSH 访问权限,WP-CLI 能给出最快的答案:

wp --info

输出包含「PHP 二进制内存限制」,反映真实的服务器端值。

提升 PHP 内存限制的三种方法

有三个地方可以设置内存限制,每个都在堆栈的不同层级。为获得最可靠的结果,应使用您可以访问的最高层级。

方法 1——wp-config.php(推荐首选)

在 WordPress 安装根目录打开 wp-config.php,在注释 /* That's all, stop editing! */ 之前添加这两行:

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

WP_MEMORY_LIMIT 适用于常规前端请求。WP_MAX_MEMORY_LIMIT 适用于 wp-admin 后台和需要更多资源的后台进程。此方法快捷,无需服务器访问权限,但只有在服务器自身的限制已达到或超过您指定值时才有效。

方法 2——.htaccess

在以 mod_php 方式运行 PHP 的 Apache 服务器上,可以通过在根目录 .htaccess 添加此行来覆盖目录级别的内存限制:

php_value memory_limit 256M

此更改会影响该目录及其子目录中的所有 PHP 文件。但是,如果您的主机使用 PHP-FPM(大多数现代 DirectAdmin 设置都如此),此指令将被忽略。PHP-FPM 不从 .htaccess 文件读取 php_value。

方法 3——php.ini

在网站的 public_html 文件夹中创建名为 php.ini 的文件,内容如下:

memory_limit = 256M

对于 PHP-FPM 环境,当无法编辑全局 php.ini 时,这通常是正确的方法。在 AsiaGB 的 DirectAdmin 主机上,您也可以通过文件管理器上传自定义 php.ini,系统会自动识别。

适用于典型 WordPress 网站的更完整推荐值集合:

memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M
max_input_vars = 3000

按网站类型推荐的内存限制

合适的值取决于网站的复杂程度。下表提供了起始参考值:

网站类型 WP_MEMORY_LIMIT WP_MAX_MEMORY_LIMIT 备注
简单博客/宣传册网站 128M 256M 少于 10 个插件
标准商业网站 256M 512M 10–30 个插件,含 SEO 插件
WooCommerce + 页面构建器 512M 512M Elementor、Divi、大量商品
大型 WooCommerce / 会员网站 512M–1G 1G 1,000+ 商品,订阅功能

请记住:wp-config.php 中的值是请求,而非保证。PHP 会默默地将内存限制在服务器配置的最大值。如果您在 wp-config.php 中设置了 256M,但服务器只允许 128M,PHP 将使用 128M。

通过 AsiaGB 主机的 DirectAdmin 提升内存限制

如果您的网站托管在 AsiaGB 的 DirectAdmin 主机上,可以在不直接编辑任何文件的情况下提升内存限制:

  1. 登录 DirectAdmin,访问 yourdomain.com:2222
  2. 点击进阶功能 > PHP 配置
  3. 找到 memory_limit 并输入您希望的值,例如 256M
  4. 点击保存——更改立即生效,无需重启 Apache

如果看不到 PHP 配置菜单,您的账户可能使用默认服务器设置。在这种情况下,通过文件管理器在 public_html 中放置自定义 php.ini 文件:

memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M

保存后,清除任何 PHP opcode 缓存(如已启用),并刷新 WordPress 中的站点健康页面以验证新限制已生效。

验证新内存限制已生效

进行更改后,在关闭终端或文件管理器之前,始终确认新限制已实际生效。

通过快速 PHP 脚本验证

创建一个临时文件并在运行时检查该值:

<?php echo ini_get('memory_limit'); ?>

如果输出 256M,说明更改已生效。确认后删除该文件。

通过 WordPress 站点健康验证

前往工具 > 站点健康 > 信息 > 服务器,查看「PHP 内存限制」行,应该显示您更新后的值。

通过 WP-CLI 验证

wp eval 'echo ini_get("memory_limit");'

修复无效的常见原因

如果您已按照上述所有步骤操作但错误仍然存在,通常是以下情况之一导致的:

专业提示:如果您已将限制提升到 512M 仍然看到内存错误,不要简单地再次提升。相反,停用所有插件,然后逐一重新激活,同时使用 Query Monitor 等插件监控内存使用情况。导致每次页面加载内存使用量激增超过 20–30M 的插件是更换的候选对象。这种二分法在数分钟内即可识别内存泄漏,远比追逐不断增加的限制有效得多。

内存限制与 WordPress SEO 性能

内存错误对 SEO 有直接的负面影响。当页面抛出致命内存错误时,HTTP 响应要么是 500 内部服务器错误,要么是空白页面——Googlebot 都会将其记录为爬取失败。重复失败向 Google 发出信号,表明该页面不可靠,可能导致爬取频率降低,最终使受影响的 URL 被取消索引。

核心网页指标——特别是最大内容绘制(LCP)和首字节时间(TTFB)——即使在发生致命错误之前,也会受到内存压力的影响。当 PHP 频繁接近内存上限时,它会花时间进行垃圾回收和内存重新分配,而不是渲染内容。这增加了延迟,损害了真实用户体验和 Lighthouse 分数。

在 Google Search Console 中出现错误之前主动解决内存问题,可保持爬取预算健康,排名稳定。

常见问题解答

WordPress 推荐的 PHP 内存限制是多少?

WordPress 官方建议一般网站至少设置 256M。如果运行 WooCommerce、Elementor Pro 或其他资源密集型插件,则设置为 512M。拥有数千个产品的大型商店或会员制网站可能需要 512M 至 1G。避免不必要地设置过高,因为这会浪费服务器内存。

我修改了 wp-config.php 但仍然收到内存超限错误,为什么?

WordPress 无法分配超过服务器 PHP 限制的内存。如果服务器的 php.ini 将内存上限设为 128M,即使您在 wp-config.php 中定义了 256M,WordPress 也无法超过该值。请通过 phpinfo() 或 DirectAdmin 检查实际限制,然后通过 .htaccess、用户 php.ini 提升服务器级别限制,或联系主机提供商。

WP_MEMORY_LIMIT 和 WP_MAX_MEMORY_LIMIT 有什么区别?

WP_MEMORY_LIMIT 控制前端可用内存(默认 40M)。WP_MAX_MEMORY_LIMIT 设置 wp-admin 后台和后台任务的上限(默认 256M)。将 WP_MEMORY_LIMIT 设置为至少 256M,将 WP_MAX_MEMORY_LIMIT 设置为至少 512M,以确保媒体上传和插件更新等管理操作顺畅运行。

WordPress 内存超限会损害我的 SEO 吗?

是的。内存错误会导致页面显示致命错误或空白死亡白屏。当 Googlebot 爬取这些损坏的页面时,它会记录服务器错误,从而降低核心网页指标分数。如果重要页面长时间损坏,它们可能会被取消索引。一旦出现内存错误,请立即修复。

AsiaGB 提供功能完备的 DirectAdmin 主机

AsiaGB 主机支持 DirectAdmin,提供 PHP 8.3 和 MySQL——起价 500 泰铢/年

查看主机方案