解决PHP错误Allowed memory size of 67108864 bytes exhausted的3种方法
当部署 WordPress 或使用其他 PHP 应用时,若报错 Fatal error: Allowed memory size of 67108864 bytes exhausted,表明脚本已耗尽分配的内存空间。这通常发生在读取大型文件或图像时,超过了 php.ini 中设置的默认上限。针对此问题,可通过代码内设置、全局配置文件修改或服务器分布式配置等方式提高 memory_limit 来解决。
错误原因分析
PHP 页面消耗的最大内存由配置文件中的 memory_limit 参数控制。该参数的默认值通常较小(例如 8MB),即 8388608 字节。如果尝试处理的文件或图片体积较大,导致运行时需要的内存超出此界限,就会触发上述错误提示。因此,合理的调整该数值是解决此类问题的关键。
解决方案一:在 PHP 文件中动态调整
目的:在不影响服务器全局配置的前提下,仅对当前特定脚本提升内存限制。
- 操作入口:发生错误的 PHP 文件头部。
- 操作步骤:在该文件的开始处加入初始化函数调用。
ini_set('memory_limit', '80M');
重要参数:将 '80M' 替换为实际需要的值(如 '128M');若需不设限,可设置为 -1。请勿设置过大,以免占用过多系统资源引发其他问题。
解决方案二:修改 php.ini 全局配置
目的:永久性地提升整个站点或服务器的 PHP 内存上限,适用于长期存在需求的场景。
- 操作入口:Web 服务器目录下的
php.ini文件。 - 操作步骤:
- 使用文本编辑器打开
php.ini。 - 搜索定位到以下行:
复制代码 代码如下:; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit - 取消注释(删除行首的分号)并修改数值:
- 使用文本编辑器打开
memory_limit = 16M
注意:请将 16M 改为大于现有报错数值的大小。保存修改后,必须重启 Apache(或 Nginx/PHP-FPM)服务使配置生效。
解决方案三:修改 .htaccess 分布式配置
目的:在无法直接访问 php.ini(如在共享主机环境)但支持分布式配置时,通过局部规则覆盖默认值。
- 前提条件:确认目标目录支持
.htaccess重写功能。 - 操作步骤:在文档根目录的
.htaccess文件中新增一行配置。
php_value memory_limit 16M
可观察的完成状态:刷新对应 PHP 页面,若无报错且运行正常,说明修改成功。同样建议根据实际需求调整单位大小(如 128M)。
简要总结
以上关于解决 “Allowed memory size of 67108864 bytes exhausted” 错误的详细内容,更多关于 PHP 内存管理及性能优化的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













