Что значит "zend_mm_heap поврежден" - PullRequest
122 голосов
/ 12 февраля 2010

Внезапно у меня возникли проблемы с моим приложением, которых у меня никогда не было раньше. Я решил проверить журнал ошибок Apache и обнаружил сообщение об ошибке «zend_mm_heap поврежден». Что это значит.

ОС: Fedora Core 8 Apache: 2.2.9 PHP: 5.2.6

Ответы [ 37 ]

2 голосов
/ 05 июля 2011

У меня только что была эта проблема и на моем сервере, и основной причиной был APC. Я закомментировал расширение «apc.so» в файле php.ini, перезагрузил Apache, и сайты снова вернулись.

2 голосов
/ 14 февраля 2011

Найдите любой модуль, который использует буферизацию, и выборочно отключите его.

Я использую PHP 5.3.5 на CentOS 4.8, и после этого я обнаружил, что eaccelerator требуется обновление.

2 голосов
/ 28 августа 2012

Я перепробовал все выше и zend.enable_gc = 0 - единственный параметр конфигурации, который мне помог.

PHP 5.3.10-1ubuntu3.2 с Suhosin-Patch (cli) (сборка: 13 июня 2012 17:19:58)

2 голосов
/ 12 ноября 2012

У меня была эта ошибка при использовании драйвера Mongo 2.2 для PHP:

$collection = $db->selectCollection('post');
$collection->ensureIndex(array('someField', 'someOtherField', 'yetAnotherField')); 

^^ НЕ РАБОТАЕТ

$collection = $db->selectCollection('post');
$collection->ensureIndex(array('someField', 'someOtherField')); 
$collection->ensureIndex(array('yetAnotherField')); 

^^ РАБОТАЕТ! (?!)

2 голосов
/ 03 марта 2013

В PHP 5.3 после долгих поисков это решение сработало для меня:

Я отключил сборку мусора PHP для этой страницы, добавив:

<? gc_disable(); ?>

до конца проблемной страницы, из-за которой все ошибки исчезли.

источник .

2 голосов
/ 09 февраля 2014

Я думаю, что много причин может вызвать эту проблему. И в моем случае я называю 2 класса одинаковыми, и один попытается загрузить другой.

class A {} // in file a.php
class A // in file b.php
{
  public function foo() { // load a.php }
}

И это вызывает эту проблему в моем случае.

(Использование фреймворка Laravel, запуск php artisan db: seed в реальном времени)

1 голос
/ 29 июня 2011

У меня была такая же проблема, и когда у меня был неправильный IP для session.save_path для сессий memcached. Изменение правильного IP-адреса решило проблему.

1 голос
/ 30 июля 2012

Для меня проблема заключалась в использовании 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)
1 голос
/ 25 ноября 2013

«zend_mm_heap поврежден» означает проблемы с управлением памятью. Может быть вызвано любым модулем PHP. В моем случае установка APC отработана. Теоретически могут помочь и другие пакеты, такие как eAccelerator, XDebug и т. Д. Или, если у вас установлены такие модули, попробуйте отключить их.

1 голос
/ 30 декабря 2013

Я пишу расширение php, а также столкнулся с этой проблемой. Когда я вызываю функцию extern со сложными параметрами из моего расширения, появляется эта ошибка.

Причина в том, что я не выделяю память для параметра (char *) в функции extern. Если вы пишете такое же расширение, пожалуйста, обратите на это внимание.

...