]> Cannot initialize zend_mm storageでhttpdが再起動 | FullAstern!

Notes

メモ書き

Cannot initialize zend_mm storageでhttpdが再起動

wwwサーバ機のOSをWindows XP ProからWindows Home Server 2011(x64) に入れ替えた時の話です。 導入していたWebサーバはApache 2.2.13(win32)+PHP 5.3.10(thread safe)。

入れ替えが済んだ後、特に問題も無く順調にリクエストを捌いていたので 暫くそのまま運用していました。 ところが数日後、Apacheのログを覗いてみると何やらエラーが起こって httpdが再起動した形跡がありました。 それが以下のログです。

Cannot initialize zend_mm storage [win32]&lf;[Fri Mar 14 05:28:20 2014] [notice] Parent: child process exited with status 255 -- Restarting.&lf;

これと同じエラーが数分~1時間おきに発生し、その度にhttpdが再起動している様子。

zendと書いてある辺りPHPに関係するエラーのようですが、 php.iniで疑わしいオプションやExtensionsをoffにしても解決せず 途方に暮れていました。

原因: 32bit on 64bit(?)

いつも通りGoogle先生に尋ねたところ、いくつかの海外フォーラムがhit。 内容を見ると、これと同様の事例は全て64bitのWindows上で32bitのApache+PHPを走らせている環境で発生しているようです。 Windows x86やLinuxなどでの例は見当たらないため、どうやらこの環境特有の症状と見て良さそう。

64bitのサーバ環境を整えるのが面倒で、 32bitのやつをそのままx64環境に流用したのが裏目に出たようです。 インガオホー。

解決策

で、対処法ですが「win32版のApacheにPHPを組み込むこと」をしないで済ませる方法を取れば良いようです。

  • PHPをCGIモードで実行する
  • または64bit版のApache+PHPを導入する

この際なので僕はサーバ環境を丸ごと64bitに入れ替えることに。 その後は件のエラーは出なくなりました。

© FullAstern!