「zend_mm_heap corrupted」のエラーを無くす方法

2017.09.20 14:12 ブログ

「zend_mm_heap corrupted」のエラーを無くす方法の画像

PHPを使用したWEBシステムを開発中に画面が真っ白になった事はないでしょうか?
タイミング的には、PHPのバージョンアップをしたり、外部ライブラリを組み込んだり、原因は様々だと思います。

Apacheのエラーログを見てみると下記のようなエラーが出ています。
/var/log/httpd/error_log
 

zend_mm_heap corrupted


調べてみると、PHPのメモリマネージャという機能が5.2から追加された様です。
詳しくは分かっていないのですが、メモリ上のデータが破損したり?で発生する様です。
(※私の場合は、少し違いました。)


解決策?ではありませんが、下記の2つの方法でエラーを無くす事ができます。

1つ目は、PHPのバージョンを5.2から5.1に変更する。
2つ目は、メモリマネージャを無効にする。

1つ目の方法は長くなるので、今回は省かせて頂きます。
2つ目の方法は簡単で、コンソールで下記コマンドを叩くだけでメモリマネージャの機能を無効に出来ます。
Apacheは再起動して下さい。
 
export USE_ZEND_ALLOC=0

Apache再起動後に、ページを開き直すと、ちゃんと開けるはずです。


余談ですが、出来るだけ原因は探る様にして下さい。
基本の機能を無効にする事になりますし、何しろ問題を放置すると後々別の問題が発生する事が多々あります。
「zend_mm_heap corrupted」を調べている時に原因として、参照渡しでNULLを渡しているのが原因という記事を見つけました。
もしこの問題に直面した時は、ソースも確認してみてください。