Como ya sabrás, no puedes subir a la biblioteca de medios de WordPress un archivo del tamaño que quieras: existe una limitación. En realidad, no es una limitación de la biblioteca de medios (la limitación también existe, por ejemplo, si quieres subir un archivo WXR mediante la herramienta de importación); ni siquiera es una limitación de WordPress. Es una limitación que viene impuesta por la configuración de PHP del servidor.
Y, como a veces esta limitación es baja y podemos necesitar subir archivos mayores de los permitidos por defecto, vamos a ver cómo podemos aumentar el tamaño máximo de subida de archivos a nuestra web. Porque, en realidad, esto no sólo vale para WordPress. Como he dicho, depende del servidor, así que da lo mismo el CMS que estemos utilizando.
Tabla de contenidos
Tamaño máximo de archivo
Seguro que ya sabes de lo que hablo. De algo así:
Sí, se le cae a uno el alma al suelo cuando ve algo así. Porque, honestamente, para subir imágenes no necesitas más. De hecho, una imagen bien optimizada no suele pasar de los 100K. ¿No te lo crees? Necesitas entonces leer esto:
Pero el caso es que no siempre se trata de imágenes. A veces hay que subir vídeos, o documentos en PDF (la biblioteca de medios es para algo más que imágenes) y, sinceramente, un mega es una miseria. Además, si tienes que realizar una importación por medio de la herramienta de importación lo habitual es que pese más que eso. Y entonces no podrás realizarla.
De dónde viene la limitación en el tamaño máximo de archivo en las subidas
No siempre la limitación es tan acusada. A veces son dos megas, a veces veinte… No es muy habitual ver valores altos, pero incluso hasta 128M te puedes encontrar si buscas un poco. ¿De dónde viene esa limitación entonces, que presenta valores tan dispares?
Pues la establece el hosting, ni más ni menos. Sí, tu empresa de alojamiento es la que configura cuál es el límite máximo de subida vía web. Y subrayo lo de vía web porque este límite no se aplica a las subidas por FTP (que puede tener sus propios límites).
Cómo aumentar el tamaño máximo de las subidas
Como te decía, es un límite establecido por tu hosting en la configuración de PHP. Más concretamente este valor se configura en el archivo php.ini. Ya vamos teniendo pistas para comenzar a buscar solución. Y vamos a hacerlo probando las diversas alternativas que tenemos.
Una solución fácil, pero con pocas posibilidades
Como es mejor empezar por lo fácil (por si podemos ahorrarnos lo demás), empezaremos por una solución que he visto funcionar muy pocas veces, aunque de vez en cuando es efectiva. Se trata de añadir unas líneas al archivo de funciones de tu theme (functions.php):
@ini_set ('upload_max_size', '64M');
@ini_set ('post_max_size', '64M');
@ini_set ('max_execution_time', '300');
¿Ha funcionado? ¿Sí? ¡Adiós, afortunado! ¿No? Pues hale, a seguir probando cosas. Vamos a por la siguiente.
A buscar el php.ini
El archivo php.ini es un archivo de configuración para el lenguaje PHP, con lo que está en el servidor y sus directivas se aplican a todas las webs alojadas en el mismo. Sin embargo a veces la empresa de hosting establece configuraciones individuales para cada uno de los servicios de alojamiento independiente, con lo que cada uno tiene su propio php.ini, con valores que se aplican sólo a ese cliente.
Vas viendo por dónde voy, ¿no? ¡Exacto! El primer paso es comprobar si tú tienes un php.ini para tu alojamiento. Búscalo en los archivos del servidor, pero no en la carpeta que contiene la web: fuera de los directorios web, html o como quiera que se llame en tu caso. No te molestes en mirar en carpetas con nombres como tmp, errors, logs o backup_db: no está en ellas. Si tienes un directorio llamado conf o etc, hay muchas posibilidades de que lo encuentres ahí.
Y ¿qué debes hacer cuando lo encuentres? Si la primera respuesta que se te viene a la mente no es hacer una copia de seguridad del archivo, tienes más peligro que McGyver en una ferretería. Lo primero, siempre, antes de tocar nada, una copia de seguridad.
Pues bien, con nuestra copia de seguridad hecha y nuestras espaldas bien cubiertas, ahora sí, vamos a editar el archivo. Cualquier editor de texto plano te servirá, si tiene función de búsqueda (CTRL+F en Win, CMD+F en Mac) mucho mejor, porque la vamos a necesitar. Estamos buscando un tramo de texto que dice lo siguiente:
; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize=1M
Aunque, evidentemente, el valor final puede cambiar en tu caso. La línea importante es la de abajo (las otras pueden incluso no estar, todo lo que empieza en ese archivo por “;” son simples comentarios), y es la que queremos modificar por algo más útil: 10M, 20M, 64M… Guardamos, y listo. ¡A subir archivos!
¿Y si no tengo un php.ini?
Bueno, en realidad lo habitual es que no lo hayas encontrado. No problem, no hay que desanimarse tan pronto, aún podemos probar alguna otra cosa.
Como, por ejemplo, crear nuestro propio php.ini. Para eso puedes utilizar FileZilla y, mediante FTP, crear un archivo vacío en la raíz del alojamiento y llamarlo (a ver si adivinas) php.ini. Acto seguido lo editas y le añades la línea de marras:
upload_max_filesize = 64M post_max_size = 64M max_execution_time = 300
Nada garantiza que te funcione el “truco”, claro está. De hecho, lo más probable es que no sirva de nada. Si es así, pasamos al siguiente intento.
Aumentar el tamaño máximo de subida de archivos mediante el .htaccess
Porque aún nos quedan cartuchos que quemar, maifrén. Uno de ellos es utilizar el archivo .htaccess. Se trata de un archivo de un archivo de configuración del servidor web Apache (el más extendido) que provee unas directivas específicas para el sitio.
Bien, pues vamos a probar. Lo primero que debes hacer es… ¡Exacto, sabía que esta vez no te pillaba! ¡Una copia de seguridad del archivo! Bien, hecho el trámite lo editamos. Se puede editar también con cualquier editor de texto plano.
Si usas WordPress, el archivo .htaccess contendrá, como mínimo, las instrucciones necesarias para convertir las URL bonitas en algo entendible por el propio servidor. No toques nada ahí si no quieres una marejada de errores 404. Debes empezar a añadir después de donde dice # END WordPress. Y, si hay más texto después de eso, mejor te vas al final del todo. Ahí debes añadir:
php_value upload_max_filesize 64M php_value post_max_size 64M php_value max_execution_time 300 php_value max_input_time 300
Y, antes de que hagas el cambio y guardes, una advertencia: puede que el servidor esté configurado para no permitir ese tipo de cambios a través del archivo .htaccess. Si es así, tu web devolverá un pantallazo blanco con el mensaje de error Internal Server Error o bien Error 500 – Internal Server Error, o algo muy parecido. No te asustes, simplemente deshaz los cambios, y haz el petate. Este sistema tampoco te sirve.
Por cierto, si has llegado aquí desde Google porque tienes un WordPress y te está saliendo un Error 500 o un Internal Server Error, quizá te sea útil echarle un vistazo a esto.
Tu última esperanza
En fin, si has llegado hasta aquí y nada de lo visto hasta ahora te ha servido, tengo para ti (como decía el chiste) una noticia buena y una mala: la buena es que aún te queda un último cartucho que quemar; la mala que no depende de ti.
Y es que esta última oportunidad es, sencillamente, contactar con el soporte de tu hosting abriendo un ticket y pidiéndoles que te aumenten el tamaño máximo de subidas permitido. Ahora bien, que lo consigas o no, ya lo ves, no estará en tu mano… sino de la flexibilidad, la eficiencia y la amabilidad del servicio de soporte de tu empresa de hosting.