最近我的应用程序出现了之前从未遇到过的问题。我决定查看Apache的错误日志,结果发现一个错误消息,显示"zend_mm_heap corrupted"。这是什么意思。
操作系统:Fedora Core 8 Apache版本:2.2.9 PHP版本:5.2.6
最近我的应用程序出现了之前从未遇到过的问题。我决定查看Apache的错误日志,结果发现一个错误消息,显示"zend_mm_heap corrupted"。这是什么意思。
操作系统:Fedora Core 8 Apache版本:2.2.9 PHP版本:5.2.6
由于其他答案都没有解决这个问题,当我意外运行了一个无限循环时,我在php 5.4中遇到了这个问题。
对我来说,是ZendDebugger导致了内存泄漏并导致MemoryManager崩溃。
我已经将其禁用,并正在寻找更新版本。如果找不到,我将切换到xdebug...
我曾经也遇到过同样的问题,但是上面的解决方法都没有帮助到我。后来我认真检查了一下,发现我的问题在于在向缓冲区发送一些输出后尝试执行die(header()),这个代码的编写者忘记了CakePHP资源,并没有简单地使用"return $this->redirect($url)"。
试图重新发明轮子,这就是问题所在。
我希望这篇文章能够帮助到某些人!
PHP在2014年11月13日修复了一个错误:
修复了错误#68365(在zend_hash_copy中发生内存溢出后,zend_mm_heap受损)。
这个问题已经在版本5.4.35、5.5.19和5.6.3中得到更新。在我的情况下,当我从使用Ubuntu官方的trusty软件包(5.5.9+dfsg-1ubuntu4.14)改为使用Ondrej Sury打包的5.5.30版本时,问题消失了。其他解决方案对我都没有用,而且我也不想禁用opcache或抑制错误,因为这真的会导致段错误(500响应)。
Ubuntu 14.04 LTS:
export LANG=C.UTF-8 # May not be required on your system
add-apt-repository ondrej/php5
apt-get update
apt-get upgrade
如果有人和我一样遇到了这个问题,我想提供一下解决方案。
我在Windows上安装了php
,但是安装在系统驱动器(C:)以外的另一个驱动器(H:)上。
在我的php.ini文件中,几个不同的文件系统变量的值都写成了\path\to\directory
,如果我的安装在C:
上,这样做就没问题。
我需要将值更改为H:\path\to\directory
。在我的php.ini
文件的几个不同位置添加驱动器号码立即解决了问题。我还确保(虽然我认为这并非必要)在我的PEAR config
中修复了相同的问题,因为几个变量值也在那里排除了驱动器号码。
这里的许多答案都已经过时了。对于我来说(通过Ondrej Sury的PPA在Ubuntu 14.04和16.04上使用php 7.0.10),问题似乎出现在APC中。我正在使用apc_fetch()等缓存数百个小数据块,当我使一部分缓存无效时,就会出现错误。解决方法是切换到基于文件系统的缓存。
更多详细信息请参见github https://github.com/oerdnj/deb.sury.org/issues/452#issuecomment-245475283。
在本地使用Docker和PHP的内置开发服务器与Craft CMS开发时,我遇到了这个问题。
我的解决方案是为Craft的会话使用Redis。
PHP 7.4
我也注意到了这个错误和SIGSEGV,当在PHP 5.2+中运行旧代码时,使用“&”来显式强制引用。
USE_ZEND_ALLOC=0
来获取错误日志中的堆栈跟踪信息,发现了一个错误/usr/sbin/httpd: corrupted double-linked list
,我发现注释掉opcache.fast_shutdown=1
对我有用。 - Spidfire