Cómo cambiar el tamaño máximo de archivo subido en PHP: guía completa

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Por qué PHP no permite subir un archivo de más de 2 MB?

\n

¿Alguna vez ha intentado subir a un sitio web una foto de buena calidad, una presentación o un video, y PHP le respondió secamente: «The uploaded file exceeds the upload_max_filesize directive in php.ini»? ¿Le suena? Este es un problema clásico que se encuentra en uno de cada dos proyectos. En Stack Overflow, la pregunta «Change the maximum upload file size» ha acumulado decenas de miles de visitas, y no es casualidad.

\n

En este artículo, analizaremos cómo funciona la limitación de subida de archivos en PHP, dónde se configura y cómo aumentar correctamente el límite. Aprenderá no solo sobre upload_max_filesize, sino también sobre los obstáculos que podrían echar por tierra todos sus esfuerzos.

\n\n

¿Cómo limita PHP la subida de archivos?

\n

Cuando envía un archivo a través de un formulario, PHP verifica su tamaño en varios niveles. Si al menos uno de ellos no lo permite, el archivo no se subirá. Analicemos los tres parámetros principales que debe modificar para que change the maximum upload file size funcione correctamente.

\n\n

1. upload_max_filesize — límite directo por archivo

\n

Este es el parámetro más obvio. Define el tamaño máximo de un solo archivo subido. Por defecto, PHP tiene 2M (2 megabytes). Para aumentarlo, por ejemplo, a 100 MB, debe escribir:

\n
upload_max_filesize = 100M
\n\n

2. post_max_size — tamaño total de la solicitud POST

\n

Aquí es donde muchos caen. Incluso si ha aumentado upload_max_filesize, pero se olvidó de post_max_size, la subida igualmente no funcionará. ¿Por qué? Porque el archivo se transmite dentro de la solicitud POST, y si el tamaño total de la solicitud supera el límite, PHP simplemente la truncará.

\n

La regla es simple: post_max_size debe ser mayor que upload_max_filesize. Generalmente se establece entre un 20 y un 30% más grande. Ejemplo:

\n
post_max_size = 120M
\n\n

3. max_execution_time — tiempo para la subida

\n

Los archivos grandes no se suben instantáneamente. Si el archivo pesa 100 MB y el internet es lento, el script podría no completarse en el tiempo asignado. Por defecto, max_execution_time = 30 segundos. Para archivos grandes, auméntelo a 300-600 segundos:

\n
max_execution_time = 600
\n\n

4. memory_limit — memoria para el procesamiento

\n

Algunos scripts de PHP cargan el archivo en memoria antes de procesarlo. Si memory_limit es menor que el tamaño del archivo, obtendrá un error. Se recomienda establecerlo mayor que post_max_size:

\n
memory_limit = 256M
\n\n

¿Dónde y cómo cambiar la configuración?

\n

Ahora que sabemos qué parámetros controlan change the maximum upload file size, veamos dónde modificarlos. Tiene tres opciones principales:

\n\n

Método 1: php.ini (archivo de configuración principal)

\n

Este es el método más fiable. Busque el archivo php.ini en el servidor (normalmente está en /etc/php/ o /usr/local/etc/). Ábralo y encuentre las directivas necesarias. Si no están, agréguelas al final del archivo:

\n
; Permitir la subida de archivos (debe estar en On)\nfile_uploads = On\n\n; Tamaño máximo de un solo archivo\nupload_max_filesize = 100M\n\n; Tamaño máximo de la solicitud POST\npost_max_size = 120M\n\n; Tiempo de ejecución del script\nmax_execution_time = 600\n\n; Límite de memoria\nmemory_limit = 256M
\n

Después de los cambios, reinicie el servidor web:

\n
sudo service apache2 restart   # para Apache\nsudo service nginx restart     # para Nginx
\n\n

Método 2: .htaccess (solo para Apache)

\n

Si no tiene acceso a php.ini (por ejemplo, en un hosting), puede intentarlo a través de .htaccess en la raíz del sitio:

\n
php_value upload_max_filesize 100M\nphp_value post_max_size 120M\nphp_value max_execution_time 600\nphp_value memory_limit 256M
\n

Importante: este método solo funciona

Blogs

Book Recommendations