PDA

Ver la Versión Completa : ¿Cómo subir archivos pesados por PHP?



Silent Ninja
19/05/2008, 23:08
Subir archivos por PHP es muy fácil, no les voy a hablar del formulario, pero les comento que en algunos casos si quieren subir archivos de más de 2mb de tamaño, tienen que cambiar la configuración base del PHP.

Lo pueden hacer creando un archivo llamado "php.ini" y lo tienen que poner en la ruta adonde ejecuten el archivo que sube datos. Acá hay 2 ejemplos:

- Si el script que sube archivos se ejecuta así:
http://sitioweb/portal/subirarchivo.php
* El php.ini va adentro de la carpeta portal

- Si el script se ejecuta así:
http://sitioweb/index.php?include=subirarchivo
* Por más que el script que lo sube esté en otro lado, tiene que estar en la carpeta del index.php (fijate que si el action del formulario, va a una subcarpeta, tenés que ponerlo en ambos lados).

Ahora, al grano, ¿qué va en el php.ini?

upload_tmp_dir = /home/usuario/tmp
max_execution_time = 1000
max_input_time = 1000
post_max_size = 100M
memory_limit = 100M
upload_max_filesize = 100M

IMPORTANTE: Adonde dice "home usuario", tenés que modificarlo por tu usuario de cpanel. Por ejemplo si tu usuario es "pepe", la ruta va a ser /home/pepe/tmp . En algunos casos, la "home" puede ser otra (www, home2, home3), podes fijarte en el cPanel la ruta por defecto a la izquierda, y sino, pedirle al soporte técnico que te habiliten un link para usar siempre /home sin importar donde estés.

Una vez tengas ese php.ini, todos los uploads hasta 100mb (que demoren menos de 1000 segundos) van a subir re bien.

Si queres subir archivos más grandes, o tenes una conexión medio lenta y demora más de 1000 segundos la subida (un poco más de 15 minutos), te recomiendo utilizar el FTP directamente (podes crear cuentas de ftp distintas de tu usuario de cpanel para no darle los datos a todos), o tendrás que utilizar un plan de VPS / Servidor Dedicado; porque los procesos tan largos o con carga de ficheros como estos, pueden consumir muchos recursos.

Silent Ninja
07/07/2008, 01:35
Edite el mensaje porque algunos archivos fallaban debido al límite de memoria, pueden solucionarlo (si ya tenian el php.ini) agregando:

memory_limit = 100M

Sino, simplemente copien el de arriba que ya está arreglado.