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

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

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

Ответы [ 37 ]

1 голос
/ 25 июня 2012

Если вы используете черты и черта загружается после класса (т. Е. В случае автозагрузки), вам нужно загрузить черту заранее.

https://bugs.php.net/bug.php?id=62339

Примечание: эта ошибка очень и очень случайна; из-за его природы.

0 голосов
/ 08 июня 2011

В моем случае я забыл следующее в коде:

);

Я поиграл и забыл это в коде тут и там - в некоторых местах я получал кучу повреждений, в некоторых случаях просто ошибка по старому сценарию:

[Wed Jun 08 17:23:21 2011] [notice] child pid 5720 exit signal Segmentation fault (11)

Я на Mac 10.6.7 и xampp.

0 голосов
/ 19 ноября 2015

13 ноября 2014 г. в PHP исправлена ​​ошибка:

Исправлена ​​ошибка # 68365 (zend_mm_heap поврежден после переполнения памяти в zend_hash_copy).

Это было обновлено в версиях 5.4.35, 5.5.19 и 5.6.3. В моем случае, когда я перешел с использования официального надежного пакета Ubuntu (5.5.9 + dfsg-1ubuntu4.14) на версию 5.5.30, упакованную Ondrej Sury, проблема исчезла. Ни одно из других решений не работало для меня, и я не хотел отключать 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
0 голосов
/ 07 октября 2015

Для меня это был RabbitMq с Xdebug в PHPStorm, поэтому> Настройки / Язык и фреймворки / PHP / Debug / Xdebug> снимите флажок «Может принимать внешние подключения».

0 голосов
/ 28 марта 2015

Я был в такой же ситуации здесь, ничто из вышеперечисленного не помогло, и, проверяя более серьезно, я нахожу свою проблему, она состоит в попытке сделать die (header ()) после отправки некоторого вывода в буфер, человек, который сделал это в Коде, забыл о ресурсах CakePHP и не сделал простое «возврат $ this-> redirect ($ url)».

Проблема была в том, чтобы заново изобрести скважину.

Надеюсь, это поможет кому-нибудь!

0 голосов
/ 10 ноября 2014

Некоторые из советов, которые могут помочь кому-то

fedora 20, php 5.5.18

public function testRead() {
    $ri = new MediaItemReader(self::getMongoColl('Media'));

    foreach ($ri->dataReader(10) as $data) {
       // ...
    }
}

public function dataReader($numOfItems) {
    $cursor = $this->getStorage()->find()->limit($numOfItems);

    // here is the first place where "zend_mm_heap corrupted" error occurred
    // var_dump() inside foreach-loop and generator
    var_dump($cursor); 

    foreach ($cursor as $data) {
        // ...
        // and this is the second place where "zend_mm_heap corrupted" error occurred
        $data['Geo'] = [
            // try to access [0] index that is absent in ['Geo']
            'lon' => $data['Geo'][0],
            'lat' => $data['Geo'][1]
        ];
        // ...
        // Generator is used  !!!
        yield $data;
    }
}

Использование var_dummp () на самом деле не является ошибкой, оно было помещено только для отладки и будет удалено из рабочего кода. Но реальное место, где произошел zend_mm_heap - это второе место.

0 голосов
/ 23 мая 2012

Настройка

assert.active = 0 

в php.ini помог мне (он отключил утверждения типа в библиотеке php5UTF8 и zend_mm_heap corrupted исчез)

0 голосов
/ 25 октября 2010

Поскольку я так и не нашел решения, я решил обновить свою среду LAMP. Я перешел на Ubuntu 10.4 LTS с PHP 5.3.x. Это, кажется, остановило проблему для меня.

0 голосов
/ 01 июня 2017

Имел zend_mm_heap corrupted вместе с child pid ... exit signal Segmentation fault на сервере Debian, который был обновлён до jessie. После долгих расследований выяснилось, что XCache был установлен до того, как Zend-Engine стал общедоступным.

после apt-get remove php5-xcache и service apache2 restart ошибки исчезли.

0 голосов
/ 13 мая 2016

Если у кого-то возникла такая же проблема, как у меня, я подумал, что предложу подходящее мне решение.

У меня php установлено в Windows на диске, отличном от моего системного диска ( H: ).

В моем файле php.ini значение нескольких различных переменных файловой системы было записано как \path\to\directory - что работало бы нормально, если бы моя установка была C:.

Мне нужно было изменить значение на H:\path\to\directory. Добавление буквы диска в несколько разных мест в моем файле php.ini сразу решило проблему. Я также удостоверился (хотя я не думаю, что это необходимо), чтобы исправить ту же проблему в моем PEAR config - так как несколько значений переменных также исключали букву диска.

...