Foros del Web » Programando para Internet » PHP »

Error al subir archivos al servidor

Estas en el tema de Error al subir archivos al servidor en el foro de PHP en Foros del Web. Hola, tengo unos scripts que me he hecho para subir archivos, son muy parecidos a todos los que hay por la red. Mi problema es ...
  #1 (permalink)  
Antiguo 27/12/2004, 10:15
 
Fecha de Ingreso: noviembre-2004
Mensajes: 17
Antigüedad: 19 años, 5 meses
Puntos: 0
Error al subir archivos al servidor

Hola, tengo unos scripts que me he hecho para subir archivos, son muy parecidos a todos los que hay por la red.

Mi problema es que no funciona cuando pretendo subir archivos de más de unos cientos de k, ni siquiera me funciona con uno de 1.3MB (un archivo pdf, en concreto), cuando si es más pequeño me funciona perfectamente (con otro archivo pdf o de cualquier otro tipo).

He configurado el php.ini para que permita subir archivos más grandes con

file_uploads = On
upload_max_filesize = 20M

pero no consigo que trague. Tras los cambios, he reiniciado el servidor cientos de veces...

Creo que no es problema del http.conf del apache, ya que he subido archivos mucho más grandes (aunque con ftp, pero supongo no tendrá problema al subirse por otra vía...).

Por favor, necesito que alguien me ilumine, no sé qué más puede ser.

GRACIAS!!!!!!!!!!!!!
  #2 (permalink)  
Antiguo 27/12/2004, 10:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Creo que no es problema del http.conf del apache, ya que he subido archivos mucho más grandes (aunque con ftp, pero supongo no tendrá problema al subirse por otra vía...).
Cuando subes un archivo a tu servidor por FTP .. estás usando otro protocolo .. el FTP, no el de HTTP que es lo que gestiona tu servidor HTTP: Apache.

Son várias las directivas de PHP que influyen sobre el Upload de archivos:
Cita:
Related Configurations Note: See also the file_uploads, upload_max_filesize, upload_tmp_dir, post_max_size and max_input_time directives in php.ini
También podrías tener problemas con el máximo tiempo que se le otorga a un script para su proceso completo .. pero eso te daría un error característico. Esto se gestiona con la función y directiva asociada:

set_time_limit()

Y Apache también afecta y controla lo que puedes subir por HTTP ya que el "upload" lo haces vía HTTP .. pasa por "Apache":

LimitRequestBody
(en un php.conf .. válido para Apache 2.x bajo linux si mal no recuerdo ..)


Un saludo,
  #3 (permalink)  
Antiguo 27/12/2004, 11:16
 
Fecha de Ingreso: noviembre-2004
Mensajes: 17
Antigüedad: 19 años, 5 meses
Puntos: 0
Muchas gracias por la informacion!

Acabo de ver que hay un topic muy reciente con EXACTAMENTE el mismo problema que tengo, y se consiguió solucionar. Yo aún no lo he conseguido y he seguido este topic en el que acabo de ver.

He mirado todo lo que me heas dicho, y ya lo había tenido en cuenta pero sigue sin funcionarme, no sé qué más puedo configurar. Lo único en lo que tengo dudas es en upload_tmp_dir, que lo tengo en blanco para que use el directorio por defecto. Si con arhcivos pequeños funciona, no hay motivo para que con otros deje de ser útil el directorio de uploads que tengo en el servidor por defecto, no?

Muchas gracias.
  #4 (permalink)  
Antiguo 27/12/2004, 11:32
 
Fecha de Ingreso: noviembre-2004
Mensajes: 17
Antigüedad: 19 años, 5 meses
Puntos: 0
Ya lo he solucionado, era un tontería, tenía un valor menor en una variable dentro del formulario que pide los datos para subir el archivo y llama al script php, que es el que comprueba que el archivo sea menor que ese valor.

Gracias.
  #5 (permalink)  
Antiguo 28/12/2004, 04:00
 
Fecha de Ingreso: noviembre-2004
Mensajes: 17
Antigüedad: 19 años, 5 meses
Puntos: 0
Hola de nuevo, aquí sigo con mis problemillas, que son los más raros del mundo :(

Resulta que me creía que funcionaba bien, pero cuando he mirado el archivo subido, tiene un tamaño muy pequeño, es decir, es como si lo hubiera "recortado", y es inservible. Ese tamaño no es fijo, cada archivo tiene uno distinto una vez que se ha subido al servidor sin que "aparentemente" haya habido problemas: 46, 175, 248... todos en BYTES (por lo que veis, apenas se ha subido nada...).

Ahora sí que creo que tengo todas las directivas y variables de limite de tamaños bien puestas, pero no sé a qué se puede deber esto. La directiva set_time_limit() no le encuentro ni en php.ini ni en httpd.conf, aunque de todas formas supongo que si fallara eso, no se llegaría a subir ningún trozo del archivo.

Qué puede pasarme? A alguienle ha ocurrido lo mismo?

Muchas gracias.
  #6 (permalink)  
Antiguo 28/12/2004, 04:09
 
Fecha de Ingreso: noviembre-2004
Mensajes: 17
Antigüedad: 19 años, 5 meses
Puntos: 0
Ya he vuelto a solucionarlo. Os lo cuento por si a alguien le pasa:

estoy usando unos scritpts que al final incluyen unas líneas de coódigo que "reformatean" los archivos subidos, es decir, los "limpian". El problema es que eso parece que tiene sentido si se sube texto plano, el objetivo es quitarle las posibles etiquetas (de HTML, por ejemplo), y claro, si subes otro tipo de archivo, pues esto se lo carga. La solución es QUITAR (o comentar) las líneas:

$fp = fopen($upfile, 'r');
$contents = fread ($fp, filesize ($upfile));
fclose ($fp);

$contents = strip_tags($contents);
$fp = fopen($upfile, 'w');
fwrite($fp, $contents);
fclose($fp);

Por si alguien iusa el mismo código que tengo yo, que está por ahí accesible, que tenga cuidado con esto.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:58.