繁体   English   中英

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

[英]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软件包,在此设备上运行良好。

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

更新:
- recursive3 ,但将其设置为-1并没有改变任何东西。 此外,在大多数情况下,我们为每个find(...)调用单独设置recursive
- 将debug0不会带来明显的变化。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM