Errores clásicos
La variable MAX_FILE_SIZE
no puede especificar un tamaño de fichero mayor que el tamaño que ha sido fijado por upload_max_filesize, en el php.ini. El valor por defecto es 2 megaoctetos.
Si se activa un límite de memoria, puede ser necesario un valor mayor de memory_limit. Asegúrese de haber definido un valor para memory_limit lo suficientemente grande.
Si el valor de max_execution_time es demasiado pequeño, el tiempo de ejecución del script puede exceder este valor. Asegúrese de haber definido un valor para max_execution_time
lo suficientemente grande.
Nota:
max_execution_time afecta únicamente al tiempo de ejecución del script. El tiempo pasado en la actividad que aparece fuera de la ejecución del script como las llamadas al sistema con la función system(), la función sleep(), las consultas a las bases de datos, el tiempo empleado para realizar la carga del fichero, etc. no está incluido en el cálculo del tiempo máximo de ejecución del script.
Advertencia
max_input_time define el tiempo máximo, en segundos, para que el script reciba los datos; esto incluye la carga del fichero. Para múltiples ficheros, o ficheros grandes, o incluso para usuarios en conexiones lentas, el valor por defecto de 60
segundos puede ser superado.
Si post_max_size está definido de manera demasiado baja, los ficheros grandes no podrán ser cargados. Asegúrese de definir post_max_size
con un tamaño suficiente.
La configuración de max_file_uploads controla el número máximo de ficheros que pueden ser enviados en una solicitud. Si el número de ficheros enviados supera este límite, entonces $_FILES dejará de recibir. Por ejemplo, si max_file_uploads vale 10
, entonces $_FILES nunca contendrá más de 10 entidades.
No validar los ficheros que se manipulan puede dar acceso a los usuarios a ficheros sensibles en otras carpetas.
Debido a la gran diversidad de sistemas, no se puede garantizar que los ficheros con nombres exóticos (por ejemplo, aquellos que contienen espacios) sean tratados correctamente.
El desarrollador no debe mezclar los campos input
normales y los campos de carga en una misma variable (utilizando un nombre de input
como foo[]
).