Logo WordPress

Subir archivos grandes a WordPress

publicado en: Apache, Aplicaciones Web, Lenguajes, PHP, WordPress | 2
 
 

Índice General

  1. ¿De qué estamos hablando?
  2. Métodos

Enlaces externos
 

  1. ¿De qué estamos hablando? (Volver al índice General)
    Es posible que en algún momento necesitemos subir archivos más grandes de lo que la configuración por defecto de WordPress nos permite, y no podamos, por el límite establecido de tamaño máximo de archivo que se puede subir.

    Para conocer el límite de subida que tiene nuestro sitio web, podemos entrar en el Panel de control, Medios, Añadir nuevo y, bajo la caja de Subir nuevo medio veremos que pone Tamaño máximo de archivo: con un número junto a él en megabytes. Este es el tamaño máximo que pueden tener los archivos que subamos. De forma predeterminada este número oscila entre 2 MB y 128 MB.
    capt-medios-max_filesize
    Existen varios métodos para aumentar este límite, pero la aplicación de los mismos dependerá de la configuración del servidor que aloja nuestro sitio web, por lo que es posible que tengamos que probar varios métodos hasta encontrar uno que funcione.

    • Conocer nuestra configuración de PHP (Volver al índice General)
      Antes de aplicar cualquiera de los métodos que se explican a continuación, es de mucha utilidad saber cómo PHP está configurado en nuestro sitio web. Para ello, PHP tiene una función que nos devuelve información sobre la configuración del nuestro sitio, no sólo de PHP.
      Haremos uso de esa función creando un archivo en un editor de texto plano y agregando esta línea de código a dicho archivo:

      <?php phpinfo(); ?>

      Guardamos el archivo como info.php y lo subimos por FTP al directorio raíz de nuestro dominio, donde está instalado WordPress. Después, con un navegador accedemos a la dirección; http://midominio.com/info.php, donde midominio.com es la dirección real de nuestro sitio web.
      El navegador presentará una lista con los detalles acerca de la configuración de PHP.

      De toda esa información, el primer dato que necesitamos, es la versión de PHP que se está ejecutando. Está en la parte superior, en el ejemplo PHP Versión 5.6.24. De la versión lo más importante es el primer número, el cual nos indica si está ejecutando una versión de PHP 4 o PHP 5. En algunos métodos se especifica la versión de PHP para la que funciona.
      versión de PHP
      Además existen datos de entre toda esa información que son relevantes para el límite de subida. La información se presenta en dos columnas, la primera columna es el valor Loal (de nuestro sitio) y la segunda, el valor General (valor por defecto del servidor). Dichos datos son los siguientes.

      • memory_limit : Define la cantidad de memoria asignada a PHP.
        capt-infophp-memory_limit
      • post_max_size : Define el tamaño máximo que se maneja en una petición POST.
        capt-infophp-post_max_size
      • upload_max_filesize : Define el tamaño máximo de carga o subida de archivos.
        capt-infophp-upload_max_filesize
      • file_uploads : Habilita/Deshabilita la subida de archivos.
        capt-infophp-file_uploads
      • max_execution_time : Define el tiempo máximo de ejecución. Conveniente de modificar para evitar que nuestro sitio se cuelgue al subir archivos grandes.
        capt-infophp-max_execution_time
      • max_input_time : Establece el tiempo máximo en segundos que se permite a un script analizar datos de entrada, como POST y GET. La medición comienza en el momento en que PHP es invocado en el servidor y finaliza cuando la ejecución comienza.
        capt-infophp-max_input_time
      • Loaded Configuration File : Indica la ubicación del archivo php.ini.
        capt-infophp-ubicacion_configfile

      Los datos anteriores nos servirán para modificar el límite de tamaño de los archivos a subir, con alguno de los métodos siguientes.

  2. Métodos (Volver al índice General)
    NOTA: Antes de realizar cualquier cambio, haremos copia de seguridad de los archivos a modificar.
    NOTA: Las descargas y subidas de archivos de configuración se realizarán utilizando un cliente FTP. Os recomiendo FileZilla.

    • Editar el archivo php.ini (Volver al índice General)
      La mejor manera de aumentar el límite de tamaño de archivos para subir es modificar el archivo php.ini del servidor.
      La modificación de este archivo dependerá de si nuestro proveedor de alojamiento web nos lo permite. Si nos lo permite, para encontrarlo, accederemos por FTP al nuestro sitio, al directorio raíz absoluto. Suele ser uno o dos directorios más arriba de donde están alojados los archivos de WordPress.
      Desde el directorio raíz absoluto, buscamos la carpeta que contiene el archivo php.ini. Suele ubicarse en la carpeta conf o etc. Buscamos en estas carpetas, si no lo localizamos, tendremos que solicitar a nuestro proveedor que nos indique su ubicación.
      Nos hacemos con una copia del archivo para editarlo y modificar los parámetros. En este ejemplo, establecemos el límite de subida a 64 MB. No es recomendable pasar de 128 MB.
      Modificaremos los valores memory_limit, y post_max_size y upload_max_filesize. Es importante usar una M para definir el límite del tamaño de archivo en megabytes, en lugar de los MB que comúnmente se usan.
      También modificaremos la variable max_execution_time y la establecemos en 600 (valor en segundos = 10 minutos). Con esto aseguramos que el sitio no se quedará colgado al subir archivos grandes.

      Al final, los parámetros quedarán así:

      memory_limit = 64M
      upload_max_filesize = 64M
      post_max_size = 64M
      max_execution_time = 600
      max_input_time = 600

      Para finalizar, guardamos el archivo en el directorio donde se encontraba, sobrescribiendo el archivo existente.
      Puede que los cambios tarden un tiempo en surtir efecto. Si tenemos un servidor dedicado podemos reiniciar el servidor, de lo contrario, consultamos a nuestro proveedor de alojamiento web.
      Si todo ha ido bien, al Añadir nuevo medio veremos que el tamaño máximo se ha modificado a 64M.

    • Utilizando nuestro propio php.ini (Volver al índice General)
      Si no encontramos el archivo php.ini, o si nuestro proveedor de alojamiento web no nos da acceso a él, podemos probar a cargar nuestro propio archivo para que sustituya los valores predeterminados. Para ello, creamos un nuevo archivo con el editor de texto plano e insertamos el siguiente código:

      memory_limit = 64M
      upload_max_filesize = 64M
      post_max_size = 64M
      max_execution_time = 600
      max_input_time = 600
      file_uploads = On

      A la hora de guardar el archivo, si nuestra versión de PHP es la 4, le daremos el nombre de php.ini y si la versión de PHP es la 5, le daremos el nombre de php5.ini (si no funciona, renombrarlo a php.ini y subirlo de nuevo).
      Una vez creado el archivo, hay que subirlo por FTP a nuestro sitio web, al directorio raíz donde están alojados nuestros archivos de WordPress.

      De nuevo, si tenemos un servidor dedicado podemos reiniciar el servidor y si no, toca esperar. Si todo ha ido bien, al Añadir nuevo medio veremos que el tamaño máximo se ha modificado a 64M.

    • Utilizando .user.ini (Volver al índice General)
      Este método sólo puede aplicarse en versiones de PHP iguales o superiores a 5.3.0.
      El proceso es similar al utilizado en el método de crear nuestro propio php.ini, pero con una gran diferencia y es que los cambios realizados en el archivo .user.ini surtirán efecto nada más subirlo a nuestro sitio web, es inmediato.
      Para ello, creamos un archivo con el editor de texto plano e insertamos el siguiente código:

      memory_limit = 64M
      upload_max_filesize = 64M
      post_max_size = 64M
      max_execution_time = 600
      max_input_time = 600

      A la hora de guardar el archivo, le daremos el nombre de .user.ini y a continuación subimos el archivo a través de FTP, al directorio de nuestra instalación de WordPress.
      Si todo ha ido bien, al Añadir nuevo medio veremos que el tamaño máximo se ha modificado a 64M.

    • Utilizando .htaccess (Volver al índice General)
      El archivo .htaccess además de utilizarse para configurar un servidor Apache, también se puede utilizar para modificar la configuración de PHP.

      NOTA: Un error de sintaxis al modificar este archivo puede ser la causa de que nuestro sitio web deje de funcionar, por lo tanto, deberemos disponer de una copia de seguridad de .htaccess a mano para restaurarlo en caso de error.

      .htaccess se encuentra en el directorio raíz de la instalación de nuestro WordPress. Deberemos descargarlo para modificarlo (antes hacer copia) y posteriormente volver a subirlo. Si no lo vemos deberemos configurar nuestro cliente FTP para ver los archivos ocultos.
      Con un editor de texto plano editamos el archivo y al final del archivo añadimos el siguiente código:

      php_value memory_limit 64M
      php_value upload_max_filesize 64M
      php_value post_max_size 64M
      php_value max_execution_time 600
      php_value max_input_time 600

      Para finalizar, subimos el archivo modificado a nuestro sitio web, y si todo ha ido bien, al Añadir nuevo medio veremos que el tamaño máximo se ha modificado a 64M.

    • Utilizando el fichero de configuración de WordPress (Volver al índice General)
      Este método se basa en la modificación del archivo wp-config.php, ubicado en el directorio raíz de la instalación de WordPress y del archivo functions.php, ubicado en el directorio raíz del tema que tenemos activo (/RaízInstalacionWordpress/wp-content/themes/TemaActivo/functions.php).

      Primero descargamos el archivo wp-config.php para modificarlo y añadimos al final el siguiente código:

      define('WP_MEMORY_LIMIT','64M');

      Una vez modificado y guardado, lo subimos al servidor.

      A continuación, descargamos el archivo functions.php para modificarlo y añadimos en la parte superior el siguiente código:

      @ini_set('upload_max_size','64M');
      @ini_set('post_max_size','64M');
      @ini_set('max_execution_time','600');
      @ini_set('max_input_time','600');

      Una vez modificado y guardado, lo subimos al servidor.

      Si todo ha ido bien, al Añadir nuevo medio veremos que el tamaño máximo se ha modificado a 64M.

    • Contactar con nuestro proveedor de alojamiento web (Volver al índice General)
      Si no funcionan ninguno de los métodos anteriores, no nos queda otra que ponernos en contacto con nuestro proveedor del alojamiento web y decirle que queremos modificar los parámetros memory_limit, upload_max_size, post_max_size, y pues ya que estamos, max_execution_time, max_input_time en el archivo php.ini.

      Algunos proveedores permiten modificar ciertos parámetros de configuración desde el panel de control (cPanel).

 
Enlaces externos (Volver al índice General)

Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
  Configuración de privacidad y de cookies.
Seguir J. Carlos:

Técnico Informático - Desarrollo Web - Administración de Redes

Técnico Informático. Desarrollo Web. Administración de redes.

Últimas publicaciones de

2 comentarios

  1. Patowins

    Muchas gracias por esta ayuda !

    Después de probar las opciones que acá se muestran me funcionó crear y usar el archivo .user.ini pero, en el front del sitio me apareció este error:

    HTTP ERROR 500

    Así que lo uso solo cuando tengo que subir archivos más grandes.

    • J. Carlos

      Hola,

      En primer lugar te pido disculpas ya que en el post hay un error de sintaxis. En el apartado .user.ini, donde pone max_input_time 600 debería poner max_input_time = 600.
      Ya he corregido el Post.

      Con respecto al HTTP ERROR 500, Es un error «comodín» generado por el servidor web. Nos indica que algo no va bien, pero el servidor no puede ser más específico sobre la condición del error en su respuesta al cliente. Además del error 500 que se le notifica al cliente, el servidor web debería generar algún tipo de registro de error interno que de más detalles sobre qué falló. Habría que localizar y analizar estos registros en el servidor web del sitio

      No es un problema del lado del cliente.

      Si utilizaste la línea max_input_time 600, corrígela y vuelve a probar. Sin sigue el error, seguimos viendo haber si tiene solución.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.