mur3.com
17dic/110

Error php_mbstring.dll en servidor web Apache 2.2, solucion

Publicado por MuR3



Estos dias he tenido en el servidor un problema que me traia por el camino de la amargura y no sabia por donde atacarlo ni como solucionarlo, no tenia ni idea de que pasaba.

Cada cierto tiempo, cada 5 o 6 horas de uso, el servidor web Apache 2.2 se colgaba, no daba ningun mensaje de error, pero si intentabas entrar en mi blog, no aparecia nada, pagina en blanco. Intentaba ver que estaba pasando en el servidor y todo parecia que iba bien, conexion OK, servicios arriba, carga de CPU a 3%, carga en RAM 500MB, nada, todo era normal, menos una cosa, cada vez que intentaba reiniciar el servidor Apache, me salia este error que os muestro en las imagenes de arriba. Si leeis el primer error, vereis que dice algo como que ya existe otro servicio escuchando por el puerto 80. Al intentar cerrar esta ventana, me salia automaticamente el siguiente error, una dll que no es capaz de cargar, bueno, nunca jamas me habia salido este error en los años que llevo con Apache, que no son pocos.

Reiniciando la maquina entera, el blog volvia a la vida, pero eso no era solucion, era una gran mierda, hasta programe reinicios automaticos cada 6 horas por que estaba desesperado y no sabia donde buscar. Hasta que  me puse a buscar a conciencia y en una pagina inglesa, a otro colega le pasaba lo mismo y no sabia por que era, pues antes no le habia salido nunca, como a mi.

Segun he podido ver en la evolucion del servidor despues de aplicar la solucion que os voy a dar, es debido a la instalacion de "algun" plugin de WordPress (no se cual, que "toca" algo del PHP pero NO modifica la carga de la dll en cuestion, osea, que hace uso de la dll, pero no es capaz de modificar el php.ini por que ESTA SIN RENOMBRAR EN APPSERV, SE DEBE RENOMBRAR y descomentar la funcion de carga de la dll. Por pasos lo veremos mejor, yo uso Appserv, por lo que la ruta de los archivos puede variar, pero el nombre de los archivos deberia coincidir, intentare hacerlo lo mas generico posible:

1.- Localizar el php.ini, en el caso de Appserv, esta en la siguiente ruta: C:\Appser\php5\php.ini
ATENCION, IMPORTANTE: Si no habeis tocado el php.ini todavia, se llamara php.ini-dist o algo similar, debies renombrarlo a php.ini, sino, aunque hagais modificaciones, no las cargara.

2.- Una vez localizado y renombrado el php.ini, localizar la linea ;extension=php_mbstring.dll, fijaros en que tiene un ";" delante, quitarlo para que se cargue la dll, guardar los cambios.
Para buscar rapido la linea, editar el php.ini con el blog de notas, ir a Edicion -> Buscar -> php_mbstring.dll

3.- Una vez guardados los cambios, parar el servidor Apache y volver a iniciarlo, una vez iniciado, REINICIARLO otra vez, si todo ha ido bien, no deberia de salir este error.

Print Friendly
Comparte:
    28jul/110

    Process exiting because it reached MaxRequestPerChild, solucion

    Publicado por MuR3

    Process exiting because it reached MaxRequestPerChild[...] este error se puede encontrar en el error.log de Apache, cuando esto ocurre, normalmente la web o servicios web que esta sirviendo Apache se congelan y no se muestran, esto sucede por tener configurado en el httpd.conf un numero bajo en la linea MaxRequestPerChild

    Personalmente yo lo tengo puesto en 0, que es ilimitado, segun he podido leer en este foro donde tambien le aparecia este error cada cierto tiempo, la recomendacion de esta configuracion es para Apache corriendo en Windows.

    Desconozco si sera peor el remedio que la enfermerdad, veremos a ver que pasa dentro de dos dias en mi blog.

    La verdad que llevo unos dias afinando mucho al configuracion PHP y del Apache en los ficheros php.ini y httpd.conf, estoy consiguiendo reducir bastante los errores o avisos en el error.log de arranque y voy notando que el servidor va mejor.

    NOTA: En algun foro he encontrado el valor 1000 para MaxRequestPerchild, no se que valor se debe poner dependiendo del trafico de la web, o en funcion a que se modifica hacia arriba o hacia abajo.

    Print Friendly
    Comparte: