Una limitación que suelen tener todos los alojamiento web compartidos (Arsys, 1&1...) es el límite máximo en tamaño o upload_max_filesize cuando deseamos subir un archivo a nuestro espacio web. Esto suele suceder cuando instalamos una aplicación web del tipo CMS (Wordpress, Joomla, Prestashop...) e intentamos añadir un nuevo plugin o paquete comprimido de un tamaño mayor a 2 Mb. Al tratar de subirlo desde el propio panel de administrador de nuestro CMS nos muestra este error para ello podemos modificar esa limitación quel normalmente es de 2 MB.
Al administrar un sitio web basado en WordPress, Prestashop, Joomla... y quieres utilizar las herramientas que nos proporcionan estos CMS para subir archivos mayores a esa limitación, el resultado será un mensaje de error.
Podemos modificarlo de varias formas que detallamos a continuación
Método 1: Crear o modificar php.ini global
La mejor solución y más efectiva es modificar el archivo principal de configuración de
PHP. Si tenemos un servidor local, un servidor dedicado podremos modificar este archivo
php.ini global sin problema, pero si tenemos un servidor compartido debemos comprobar con nuestro proveedor si es posible modificarlo, algunos proveedores de hosting compartido si permiten añadir o modificar parámetros en el
php.ini
Dependiendo de tu OS debes editar el archivo
php.ini con los siguientes comandos:
ArchLinux:
$ sudo vim /etc/php/php.ini
|
Ubuntu y
Debian:
$ sudo vim /etc/php5/apache2/php.ini
|
Fedora y
CentOS:
Usa
nano,
gedit, o el editor que prefieras.
En el archivo
php.ini, busca la línea de texto
upload_max_filesize y modifica el valor para incrementarlo , por ejemplo:
upload_max_filesize = 12M
|
También es recomendable aumentar los valores de
post_max_size es decir el tamaño máximo de carga para el envío, debe ser igual o mayor al
upload_max_filesize, también debes modificar
max_execution_time es decir, el tiempo máximo pero en segundos que el servidor dará al
script para que se ejecute, en este caso, la carga de archivos. Por tanto nos quedaría del siguiente modo:
upload_max_filesize = 12M
post_max_size = 12M
max_execution_time = 120
|
Guarda los cambios y sal del edito recuersda reiniciar
Apache para que todo funcione.
En
ArchLinux:
$ sudo /etc/rc.d/httpd restart
En
Debian y
Ubuntu:
$ sudo /etc/init.d/apache2 restart
En
Fedora y
CentOS:
$ sudo /etc/init.d/httpd restart
En el caso que sea un hosting compartido, no es necesario ni posible reiniciar.
Método 2: Usar php.ini local
Básicamente es hacer lo mismo que la solución anterior, la diferencia es que no se modifica el
php.ini global, si no que creamos un
php.ini local. Este método tiene algunas limitantes:
- Los efectos del
php.ini local no son recursivos a los subdirectorios en donde se encuentre ubicado, así que no basta crearlo en el directorio raíz de nuestro servidor, si no que debemos especificar un php.ini en cada directorio donde queramos obtener el efecto deseado.
- Puesto que cada
php.ini local se toma en cuenta en vez del php.ini global, éstos deben incluir ciertas directivas de compatibilidad necesarias para el web hosting que tengas contratado, por lo que es necesario consultar a tu proveedor por dichas directivas.
Un ejemplo de
php.ini local, con directivas de compatibilidad y las que nosotros necesitamos, sería:
zend_extension = /usr/local/ioncube/ioncube.so
register_globals = Off
magic_quotes_gpc = Off
session.save_path = /tmp
memory_limit = 200M
upload_max_filesize = 10M
post_max_size = 20M
max_execution_time = 120
|
Pero repito, es muy importante consultar la documentación de tu proveedor de
hosting.
Método 3: Usar .htaccess
Crea (o modifica, en caso de que ya exista) el archivo
.htaccess en el directorio raíz de tu sitio, blog o aplicación web, o bien, en el directorio donde deseas que las directivas tengan efecto.
Agrega las siguientes líneas (modifica los valores según lo requieras):
php_value upload_max_filesize 10M
php_value post_max_size 20M
php_value max_execution_time 120
|
A diferencia de la solución anterior, aquí no hay limitantes: los efectos del
.htaccess si son recursivos a los subdirectorios donde se encuentre ubicado, y basta con especificar las directivas que nos interesan.
Notas Finales
En algunos ejemplos mencionados, utilicé
sudo, pues son comandos que deben ejecutarse con permisos administrativos. Si no tienes configurado tu usuario para utilizar
sudo, entonces debes ejecutar dichos comandos como
root.