Un error absolutamente extraño me ha tenido loco durante un tiempo con un WAMP sobre Windows 2008 Server y no sabía qué coño era lo que estaba pasando pero ya lo solucioné
Y es algo como mínimo curioso. No es que le falte una DLL, es que le sobran ja, ja, ja
El
Error zend_mm_heap corrupted Eliminando un error muy oscuro e insidioso
-----------------------------------------------------------------------------------------------------------------------
Me ha costado mucho trabajo, y sudor y lágrimas, encontrar la causa de este error, como digo en el subtítulo oscuro e insidioso hasta la desesperación.
El efecto era tan esquivo como que al intentar cargar una página, cualquier página, se perdía la conexión entre el navegador y Apache, apareciendo sólo entonces en aquel un criptico mensaje de "Se ha reiniciado la conexión mientras se cargaba la página".
Consultando el log de Apache (en C:/Apache 2.2/logs que es donde deben estar) veía que efectivamente el Servicio Apache se reiniciaba:
...
[Tue Aug 10 00:00:00 2099] [notice] Child 6912: Starting thread to listen on port 80.
zend_mm_heap corrupted
[Tue Aug 10 00:00:00 2099] [notice] Parent: child process exited with status 1 -- Restarting.
[Tue Aug 10 00:00:00 2099] [notice] Apache/2.2.4 (Win32) PHP/5.2.0 configured -- resuming normal operations
...
Así que me puse a buscar por Internet junto a San Google bendito y ¡voilá! al fin lo encontré. Parece ser que este error se produce cuando Apache - PHP no puede encontrar la dll de MySQL, libmysql.dll, o ... ¡cosa curiosa! cuando dentro del PATH de Windows hay varias ubicaciones distintas donde sí puede encontrar dicha dll pero son varias, como si no supiese cual de ellas elegir.
Como es el caso de mi PC de desarrollo:
El volumen de la unidad C es Sistema
El número de serie
del volumen es: 88B1-3E74
Directorio de C:\opt\Apache2.2\bin
01/07/2009 10:09 1.470.464 libmysql.dll
1 archivos 1.470.464 bytes
Directorio de C:\opt\HeidiSQL
04/02/2010 18:25 2.359.296 libmysql.dll
1 archivos 2.359.296 bytes
Directorio de C:\opt\MySQL\MySQL Administrator 1.0
26/05/2005 18:28 1.273.856 libmySQL.dll
1 archivos 1.273.856 bytes
Directorio de C:\opt\MySQL\MySQL Server 5.1\bin
15/11/2008 06:53 2.260.992 libmySQL.dll
1 archivos 2.260.992 bytes
Directorio de C:\proyectos\instaladores\ISS_MySQL5_Install\MySQL_Install_Structure\MySQL\Server\bin
08/04/2010 17:22 2.359.296 libmySQL.dll
1 archivos 2.359.296 bytes
Total de archivos en la lista:
5 archivos 9.723.904 bytes
0 dirs 180.347.203.584 bytes libres
La solución: decirle a Apache - PHP cual es la que debe cargar y donde se encuentra. Esto lo hacemos en el mismo httpd.conf de Apache añadiendo una línea ANTES de la linea que carga el Module PHP.
...
LoadFile "C:/opt/php/libmysql.dll"
LoadModule php5_module C:/opt/php/php5apache2_2.dll
...
Guardamos el httpd.conf, reiniciamos el Servicio Apache y el error de zend_mm_heap corrupted será historia.