WAMP by RedRaven
WAMP: Apache


MySQL. Índice de trucos, ideas, tips ...    


1.- Directiva directory. Protegiendo nuestras mas preciadas posesiones tras un muro de silencio.
2.- Directiva dir_module. Si no me llamas a mí ¿a quien te envío entonces?.
3.- El error zend_mm_heap corrupted Eliminando un error muy oscuro e insidioso

AP2

 Directiva directory. Protegiendo nuestras mas preciadas posesiones tras un muro de silencio.

   Apache tiene una mala costumbre que tenemos que erradicar. Supongamos (un poné) que escribimos una dirección (un directorio) sin un documento específico ... 

   Por ejemplo escribimos http://escribir.garcia-cuervo.net/images que no contiene ningún index.php, ni index.htm ni ... solo algunas decenas de imágenes. ¿Qué hace (por defecto) nuestro Apache? 

   Pues que al no saber qué ofrecernos tras nuestra petición el cabrón de Apache nos manda un listado de todo el contenido del directorio. Ea, y se queda tan tranquilo, diciéndole a nuestro visitante qué tenemos guardado en el cofre. 

   Esto puede ser un agujero de seguridad del tamaño de una paella (grande, como para veinte comensales) y hau que evitarlo a toda costa. Para ello disponemos de la configuración del Directory 

   Directory tiene la posibilidad de aplicarse de forma general o personalizada directorio a directorio de nuestra Web. 

   Originalmente la cláusula Directory viene así: 

<Directory />
   Options Indexes FollowSymLinks
   AllowOverride None
   Order deny,allow
   Deny from all
   Satisfy all
</Directory>
 
   El Indexes y el FollowSymLinks son los culpables de que Apache sea tan traidoramente indiscreto con nuestras interioridades. Hay que ponerle coto a esto y para ello nada mejor que desactivar las dos directivas con tan solo añadirles por delante a ambas un simple guión - 

<Directory />
   Options -Indexes -FollowSymLinks
   AllowOverride None
   Order deny,allow
   Deny from all
   Satisfy all
</Directory>
 
   Así con -Indexes y -FollowSymLinks le decimos a Apache que si no encuentra específicamente lo que le pedimos que no devuelva error, pero que no se ponga a darles la carta de platos y que se sirva a gusto. 

   Un poquito de por favor, vamos a llevarnos bien y haz lo que yo te diga. Vamos, hombre. 

   Volver 

AP1

 Directiva dir_module. Si no me llamas a mí ¿a quien te envío entonces?.

   Cuando escribimos una dirección Web en nuestro navegador de Internet y no decimos directamente qué documento queremos leer, o el enlace no lo especifica que es lo mismo, sino que solo ponemos el directorio , por ejemplo http://picmania.garcia-cuervo.net/ que contiene algunas decenas de .HTML y .PHP, entre ellos u index.html y un index.php e incluso un Default.html ... ¿Qué documento nos servirá nuestro Apache? 

   Para eso está la directiva dir_module. Para especificar qué documento debe servirse por defecto si no hemos en primer lugar, si existe. En caso contrario qué otro documento deber ser el ofrecido, si existe. Si tampoco está éste entonces un tercero .... 

<IfModule dir_module>
   DirectoryIndex index.php index.htm Default.htm
</IfModule>
 
   Con esto le decimos a nuestro Apache que si le damos una dirección sin un documento específico debe mirar si existe index.php, si existe lo sirve, en caso contrario debe mirar si existe index.htm que si existe es el que debe servir pero que si tampoco está debe mirar si tiene un tal Default.htm ... y si tampoco está entonces ... dependerá de lo descrito en Directory (Ver siguiente Tip

   Como podéis ver la declaración anterior empieza con un ...  

<IfModule dir_module>
 
   O sea que puede ser que el IfModule dir_module sea false, que no lo tengamos activado (aunque si que viene activado por defecto al instalar Apache) pero por si acaso ... debemos asegurarnos que si, que hemos activado el dir_module. 

   Para ello miramos la sección de los modules y nos aseguramos que tenemos esta línea sin comentar (recordad que en la cofiguración de Apache una línea comentada empieza por el carácter #) 

LoadModule dir_module modules/mod_dir.so
 
   Evidentemente si nuestra configuración fuese ... 

<IfModule dir_module>
   DirectoryIndex index.php
</IfModule>
 
   entonces o servimos index.php o ... nada de nada, no me queda mire usted. 

   Volver 

AP3

 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. 

    

   Volver 


Visitas
Totales : 4856 Hoy: 1 Activas: 1 Vistas: 4856

Esta página fue modificada el 07-08-2010 15:44:04

           
 DmSoft PicManía Escribir Unreal