domingo, 3 de febrero de 2013

Cómo aumentar el tamaño de subida de archivos en XAMPP

XAMPP es un servidor web portable, con Apache+PHP+MySQL y otras utilidades que permiten montar rápidamente un servidor web en cualquier puesto. Tiene numerosas aplicaciones en distintos contextos: desde poder distribuir un archivo rápidamente por una red local utilizando un navegador o bien poder montar una plataforma en línea dentro del ámbito de la red local. De hecho, es la posibilidad de montar un servicio web dentro de una red local lo que hace que XAMPP sea atractivo: sólo hay que ir al panel de control y lanzar a ejecución Apache y MySQL.

Uno de los problemas más típicos en el uso de XAMPP es la limitación de tamaño de los archivos de subida. La configuración por defecto de XAMPP tiene una limitación de 2MB para el tamaño de los archivos subidos. Veamos a continuación cómo modificar este límite:



1.- Hay que modificar la configuración de PHP en XAMPP.

Muy fácil: sólo hay que ir a la carpeta xampp/php y editar el archivo php.ini. Es habitual que Windows esté configurado para abrir los archivos .ini con el Bloc de notas, así que sólo necesitaremos hacer doble click sobre el icono del archivo.


2.- Buscar y modificar el valor de tres cadenas.

Ya en el Bloc de notas, presionamos Ctrl+B para que aparezca el cuadro de búsqueda de texto y buscamos la cadena post_max_size


Modificamos entonces el valor en megas del tamaño máximo para POST. Esto debe ser un poco mayor del tamaño máximo de subida de archivos.

La explicación es sencilla: cuando se sube un archivo, se envía al servidor web mediante POST junto a información adicional que acompañe a los archivos que se suben, como puede ser campos de formulario y otros datos del protocolo HTTP. En una configuración normal, añadir un mega al tamaño máximo de subida de archivos que queramos debería ser suficiente.

Es más: el valor de post_max_size es el límite que no se puede superar. Si ponemos en este valor un límite de 10MB e intentamos subir de una vez dos archivos de 6MB no será posible realizar la operación, ya que los dos archivos se intentan subir con la misma petición POST y su tamaño total  (12MB) excede el límite de 10MB.

Otra consideración más: post_max_size no puede llegar al límite de memoria asignado a PHP. La explicación es sencilla: conforme se suben datos mediante POST, éstos se copian en memoria para procesarlos. Para no consumir muchos recursos en el servidor, PHP tiene un límite de memoria utilizable, que en la configuración por defecto está en 128MB.

Un valor apropiado para un entorno XAMPP puede ser unos 26MB:


Repetimos la misma operación con el valor upload_max_filesize: lo buscamos primero con Ctrl+B y después definimos su valor. Siguiendo con lo anterior, un valor apropiado puede ser unos 25MB:


Finalmente, tenemos que modificar también el valor max_execution_time: lo buscamos primero con Ctrl+B indicando que busque "hacia arriba". Este valor limita en segundos el tiempo máximo de ejecución de cualquier página. Hay que incrementarlo puesto que la subida de archivos de mayor tamaño seguramente requerirá mayor tiempo de subida para que se pueda completar.

En un entorno XAMPP en local para subida de archivos del tamaño fijado anteriormente, un valor apropiado puede ser 600:


3.- Guardar el archivo php.ini y reiniciar Apache.

Tras modificar estos valores, guardamos los cambios que hemos hecho en php.ini en el Bloc de notas y usando el panel de configuración de XAMPP, reiniciamos el servidor Apache.

Es posible que tengamos entonces que ir a la configuración de la aplicación que estemos usando en XAMPP para modificar el tamaño máximo de archivos según el nuevo valor que permite el entorno de ejecución. En Moodle, se permite por defecto el tamaño máximo que permita el servidor (Administración del sitio -> Seguridad -> Políticas del sitio) aunque si teníamos un curso creado y hemos modificado después el tamaño máximo de subida, tendremos que acceder a la configuración del curso para comprobar si el valor se ha modificado.

¿Algún consejo más?, ¿alguna consideración se nos haya escapado?, los comentarios son siempre bienvenidos! :)

Fuente: Moodle Docs.

23 comentarios:

  1. Hola, fijate que hice los pasos exactamente como los mencionas y me funcionaron perfectamente. Tenia rato buscando por todo internet y algunos daban informacion a medias, segui los pasos de ellos y nunca me funcionaron hasta que di con tu blog. Tenia una base de datos muy grande en excel y por fin la pude importar a mysql con tu ayuda, GRACIAS!.

    ResponderEliminar
  2. Hola brooder muchas gracias me ha ayudado .



    diste en el punto he visitado varias página y no he dado con la respuetaaaa 



    Que dios te bendiga :)  



     

    ResponderEliminar
  3. Un millon de gracias amigo, habia estado buscando esto todo el dia y no podia dar con el problema, tu explicación es muy buena y me ayudo a resolver el problema, de verdad muchas muchas gracias.

    ResponderEliminar
  4. Realmente brillante: MIL GRACIAS

    ResponderEliminar
  5. Gracias!!

    Todavía no lo he probado pero la explicación clara y precisa, después de navegar por varios sitios y encontrar basura, merece todo mi respeto y reconocimiento.

    ¡Que Sandro León te bendiga amiguito!!

    ResponderEliminar
  6. Buufff erstaba de pruebas y atascado por este tema. Gracias!!

    ResponderEliminar
  7. Hola! ante todo muchas gracias por la información :)

    tengo una pregunta a cerca de esto:

    "Otra consideración más: post_max_size no puede llegar al límite de memoria asignado a PHP. La explicación es sencilla: conforme se suben datos mediante POST, éstos se copian en memoria para procesarlos. Para no consumir muchos recursos en el servidor, PHP tiene un límite de memoria utilizable, que en la configuración por defecto está en 128MB."

    Y es ¿Cómo modificamos este valor a uno superior si necesitamos aumentar por ejemplo, la sentencia post_max_size a 400 megas?

    ResponderEliminar
  8. Muchas gracias! Funcionó a la perfección!

    ResponderEliminar
  9. Gracias men, ahora aré un holo! :D

    ResponderEliminar
  10. gracias por tu ayuda me sirvio mucho. :)

    ResponderEliminar
  11. Que gran ayuda, muchas gracias me sirvió a la perfección.

    ResponderEliminar
  12. Gracias, rápido y fácil muy explicado.

    ResponderEliminar
  13. Muchas gracias por la explicacion, ha sido sencillo y me has resuelto el problema.

    ResponderEliminar
  14. Muchas gracias por las explicaciones. He conseguido resolver el problema, aunque ahora me da otro, pero supongo que es parte de la informática. Gracias por la clase.

    ResponderEliminar
  15. Los pasos estan de una manera entedible en dode me permitio realizar la actividad correcta y no tuve problemas cuando hice las modificaciones en xampp.

    ResponderEliminar
  16. La explicacion es muy clara y me permitio modificar xampp sin problemas

    ResponderEliminar
  17. che, hice eso y se me cagó todo el programa. ahora no puedo abrir el admin de joomla.. AYUDA!!!

    ResponderEliminar
  18. Disculpa no me modifica el tamaño, al momento de importar me sigue detectando solo 2.0 megas

    ResponderEliminar
  19. Gracias me hacía falta, muy bien explicado.

    ResponderEliminar
  20. hola perdona pera ya hice todo eso de echo compre un tema y tenia instalado la version 1.6.0.9 y nada cambie a la 1.6.5.*
    y me funciono un rato despues se desconfiguro totalmente y volvi a reinstalarla y sige sin cargar me dice del limite exedido

    ResponderEliminar