最近我的应用程序出现了之前从未遇到过的问题。我决定查看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 的 Mongo 2.2 驱动程序时遇到了这个错误:
$collection = $db->selectCollection('post');
$collection->ensureIndex(array('someField', 'someOtherField', 'yetAnotherField'));
^^无法工作
$collection = $db->selectCollection('post');
$collection->ensureIndex(array('someField', 'someOtherField'));
$collection->ensureIndex(array('yetAnotherField'));
^^ WORKS! (?!)
我认为造成这个问题的原因有很多。在我的情况下,我给两个类命名了相同的名称,其中一个会尝试加载另一个。
class A {} // in file a.php
class A // in file b.php
{
public function foo() { // load a.php }
}
<? gc_disable(); ?>
来源。
我也在我拥有的一个服务器上遇到了这个问题,根本原因是APC。我在php.ini文件中注释掉了"apc.so"扩展,重新加载了Apache,网站马上恢复正常。
寻找使用缓冲的任何模块,并有选择地禁用它。
我正在CentOS 4.8上运行PHP 5.3.5,在这之后,我发现eaccelerator需要升级。
zend.enable_gc = 0
对我有帮助。对我来说,问题出在使用pdo_mysql。查询返回了1960个结果。我试图返回1900条记录,它可以正常工作。因此问题是pdo_mysql和数组过大。我用原始的mysql扩展重写了查询,它可以正常工作。
$link = mysql_connect('localhost', 'user', 'xxxx') or die(mysql_error());
mysql_select_db("db", $link);
Apache 没有报告任何先前的错误。
zend_mm_heap corrupted
zend_mm_heap corrupted
zend_mm_heap corrupted
[Mon Jul 30 09:23:49 2012] [notice] child pid 8662 exit signal Segmentation fault (11)
[Mon Jul 30 09:23:50 2012] [notice] child pid 8663 exit signal Segmentation fault (11)
[Mon Jul 30 09:23:54 2012] [notice] child pid 8666 exit signal Segmentation fault (11)
[Mon Jul 30 09:23:55 2012] [notice] child pid 8670 exit signal Segmentation fault (11)
我曾经遇到过同样的问题,当时是因为在memcached会话的session.save_path中设置了错误的IP地址。将其更改为正确的IP地址后,问题得以解决。
USE_ZEND_ALLOC=0
来获取错误日志中的堆栈跟踪信息,发现了一个错误/usr/sbin/httpd: corrupted double-linked list
,我发现注释掉opcache.fast_shutdown=1
对我有用。 - Spidfire