已分配大量内存仍提示内存耗尽,多文件调整无效求助
看到你碰到的这个内存耗尽报错,我之前折腾过好多次类似的情况,给你梳理几个靠谱的排查和解决步骤:
首先先明确你的报错信息:
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 72 bytes) in /home/xxx/public_html/wp-includes/wp-db.php on line 2516
这个报错说明当前PHP进程只能用64MB内存,而你的操作需要更多,下面是具体解决方向:
1. 确认php.ini的内存限制配置是否生效
从你贴的php.ini片段来看,只设置了执行时间等参数,缺少memory_limit的配置,你需要在Resource Limits区块添加或修改:
;;;;;;;;;;;;;;;;;;; ; Resource Limits ; ;;;;;;;;;;;;;;;;;;; max_execution_time = 3600 max_input_time = 3600 max_input_vars = 10... memory_limit = 256M
(如果是后台管理操作,建议设到512M更稳妥)
关键是要确保你修改的是当前网站正在使用的php.ini文件:
- 新建一个
phpinfo.php文件,内容是<?php phpinfo(); ?>,上传到网站根目录访问 - 找到
Loaded Configuration File项,这就是你需要修改的php.ini路径 - 修改后重启PHP服务(虚拟主机可在面板操作,或联系客服协助)
2. 用wp-config.php强制设置WordPress内存
有时候php.ini的设置会被WordPress覆盖,这时候直接在wp-config.php里设置更可靠:
找到文件里的/* That's all, stop editing! Happy publishing. */这一行,在它之前添加:
define( 'WP_MEMORY_LIMIT', '256M' ); // 如果是后台管理操作,再加这行提升上限 define( 'WP_MAX_MEMORY_LIMIT', '512M' );
注意不要把这行放在注释之后,否则不会生效。
3. 还原wp-settings.php的修改(不建议修改核心文件)
wp-settings.php是WordPress核心文件,修改它不仅会在WordPress更新时被覆盖,还可能导致核心逻辑冲突,建议你把之前改的内容还原,依赖核心文件的修改不是长久之计。
4. 排查服务器层面的强制限制
如果上面的方法都没用,很可能是你的主机商(尤其是共享主机)强制限制了PHP内存上限,不管你怎么改配置都无效:
- 可以试试在网站根目录的
.htaccess文件里添加:
php_value memory_limit 256M
(如果主机禁用了htaccess的PHP设置,这行会报错,需要删掉)
- 如果还是不行,直接联系主机客服,请求调高PHP内存限制。
5. 排查插件/主题的内存泄漏问题
有时候内存耗尽不是因为总内存不够,而是某个插件或主题存在内存泄漏:
- 先切换到WordPress默认主题(比如Twenty Twenty-Four),看报错是否消失
- 然后禁用所有插件,再一个个重新启用,每次启用后测试,找到导致内存耗尽的插件,要么更新它,要么替换成同类插件。
内容的提问来源于stack exchange,提问作者user9538545

