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 SistemaEl n£mero de serie del volumen es: 88B1-3E74Directorio de C:\opt\Apache2.2\bin01/07/2009 10:09 1.470.464 libmysql.dll 1 archivos 1.470.464 bytesDirectorio de C:\opt\HeidiSQL04/02/2010 18:25 2.359.296 libmysql.dll 1 archivos 2.359.296 bytesDirectorio de C:\opt\MySQL\MySQL Administrator 1.026/05/2005 18:28 1.273.856 libmySQL.dll 1 archivos 1.273.856 bytesDirectorio de C:\opt\MySQL\MySQL Server 5.1\bin15/11/2008 06:53 2.260.992 libmySQL.dll 1 archivos 2.260.992 bytesDirectorio de C:\proyectos\instaladores\ISS_MySQL5_Install\MySQL_Install_Structure\MySQL\Server\bin08/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.
Volver