致命错误:允许的内存大小为134217728字节耗尽(试图分配87个字节)

时间:2011-07-02 04:54:45

标签: php cakephp

当我登录我的网络应用程序时,它显示如下错误:

  

致命错误:/gt/2.ps.fo/home/hft/domains/console.fo.spalgo.com/public_html/cake/libs/中允许的内存大小为134217728个字节(尝试分配87个字节)第775行的model / datasources / dbo / dbo_mysql.php

有没有解决这个问题的方案?为什么我会收到此错误?

5 个答案:

答案 0 :(得分:9)

听起来你已经分配了more memory than PHP will allow。按照链接页面上的说明修改网站memory_limit配置中的php.ini设置。

另一种可能性(不太可能)是您已达到用户或群组的setrlimit(2)资源限制。检查/etc/security/limits.conf可能为您的Web服务器设置的限制,以及启动服务器环境和PHP解释器环境的任何初始化脚本。

答案 1 :(得分:3)

我在搜索SO时发现“PHP内存不足”的第一个例子是this one

答案 2 :(得分:1)

尝试使用echo,而不是先将正在打印的内容存储到变量中。

答案 3 :(得分:1)

ini_set('memory_limit', '-1');

答案 4 :(得分:1)

查看抛出致命异常(dbo_mysql.php)的文件,我假设您的调用是从DataBase中检索数据。

另外,查看内存限制,它显示134217728个字节,即128MB,因此我认为无论您的API调用是什么,都会尝试获取大量数据,这些数据总数超过了每个脚本分配的限制。 /> 例如,如果API调用堆栈中的最后一个脚本使用20MB来满足其需求,然后厌倦从值115MB的数据库中获取数据,那么您的脚本将尝试分配135MB }已超过限制7MB,从而导致Fatal Exception

所以,我看到了一些要检查/做的事情:

  1. 您没有检索不必要的数据,换句话说,只检索您需要的数据。
  2. 如果你确实需要所有这些数据,那么
    • 增加memory_limit文件下的php.ini Con:如果您的数据不断增长,您可能需要不断更新此值,仅限一个脚本,并将您的内容暴露给内存泄漏或内存不足。
    • 或者我建议您实施某种分页(这样可以控制内存限制)并使您的应用程序更具可扩展性。