我最近几个月一直在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:
我已经解决了这个问题。我将在答案中提供详细信息。
答案 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错误日志中是否有违规代码所在的行,看看你是否确实陷入了递归循环。