PHP内存不足,但仅限于一个系统

时间:2014-01-14 18:08:02

标签: php apache windows-7 cakephp-2.0 localhost

我最近几个月一直在CakePHP应用程序上工作 大部分时间我使用lampp包在Lubuntu上进行开发 在这个设置中一切正常,就像我可以访问的两个不同的远程服务器上一样 几天前,情况迫使我将开发转移到使用Windows 7作为操作系统的笔记本电脑设备上 该应用程序在这里不起作用。 php_error_log 包含Allowed memory size of 134217728 bytes exhausted 我已在 php.ini 中将memory_limit切换为-1,现在它是PHP Fatal error: Out of memory (allocated 1488453632) (tried to allocate 15470592 bytes)
这闻起来像一个无限循环,但应用程序仍然可以在其他服务器上正常工作。其他应用程序,包括刚刚下载的Cakephp软件包,在此设备上运行良好。

我对此错误的明显排他性感到困惑。如果你告诉我应该检查什么,我可以提供更多信息。

更新
- recursive位于3,但将其设为-1并未改变任何内容。此外,在大多数情况下,我们会为每个recursive电话单独设置find(...) - 将debug设置为0不会带来明显的变化。

UPDATE2:
我已经解决了这个问题。我将在答案中提供详细信息。

2 个答案:

答案 0 :(得分:1)

我找到了问题的根源,虽然我只是部分了解它。 原因在于\ lib \ Cake \ Model \ Datasource \ CakeSession.php:

if (ini_set($setting, $value) === false) {
throw new CakeSessionException(sprintf(
    __d('cake_dev', 'Unable to configure the session, setting %s failed.'),
    $setting
)); }

此行一次又一次地抛出异常以设置session.auto_start。 表达式0 === false似乎错误地返回true。我假设因为phpinfo()显示session.autostart已关闭。 我可以在相关块之前打印出值,但如果由于某些未知原因比较确实是错误的,那么为什么打印是正确的呢? 我没有时间进一步调查。我已经评论了开发时间的例外情况。在生产服务器上一切正常。

答案 1 :(得分:0)

尝试添加ini_set('memory_limit','1G'); 到有问题的php页面的顶部,看看它是否运行。

如果您仍然收到错误消息。检查Apache错误日志中是否有违规代码所在的行,看看你是否确实陷入了递归循环。