[英]PHP Out of memory, but only on one system
我在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
并没有改变任何东西。 此外,在大多数情况下,我们为每个find(...)
调用单独设置recursive
。
- 将debug
为0
不会带来明显的变化。
UPDATE2:
我已经解决了这个问题。 我将在答案中提供详细信息。
我找到了问题的根源,虽然我只是部分了解它。 原因在于\\ 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已关闭。 我可以在相关块之前打印出值,但如果由于某些未知原因比较确实是错误的,那么为什么打印是正确的呢? 我没有时间进一步调查。 我已经评论了开发时间的例外情况。 在生产服务器上一切正常。
尝试添加ini_set('memory_limit','1G'); 到有问题的php页面的顶部,看看它是否运行。
如果仍然收到错误。 检查Apache错误日志中是否有违规代码所在的行,以查看您是否确实陷入了递归循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.