Foros del Web » Programando para Internet » PHP »

Problema extraño con move_uploaded_file

Estas en el tema de Problema extraño con move_uploaded_file en el foro de PHP en Foros del Web. Hola, es la primera vez que hago una consulta en este foro, muchas gracias de antemano por vuestra atención. Llevo días rompiéndome la cabeza con ...
  #1 (permalink)  
Antiguo 16/08/2010, 06:48
 
Fecha de Ingreso: agosto-2010
Mensajes: 5
Antigüedad: 14 años, 3 meses
Puntos: 0
Problema extraño con move_uploaded_file

Hola, es la primera vez que hago una consulta en este foro, muchas gracias de antemano por vuestra atención.

Llevo días rompiéndome la cabeza con un problema y no le pillo salida ninguna.

Es muy sencillo, tengo un administrador de subida de fotos para una clienta fotógrafa. Ella escoge la foto que quiere subir al servidor y lo muevo con move_uploaded_file. Hasta ahí ningún secreto.

Este proceso sencillo, me ha funcionado siempre sin problemas (no tiene mucho misterio), pero un día ocurrió algo y a partir de ahí dejó de funcionarme, lo cuento por si tiene relación.

Resulta que el usuario del script agotó la cuota de disco en el hosting compartido (1GB). Yo procedí a borrarle los archivos temporales de caché que se habían generado en las carpetas de phpThumbs, total que ya volvíamos a disponer de todo el espacio en disco otra vez.

La cuestión es que a partir de ese momento, el move_uploaded_file me da error. El error que da es el 7 (UPLOAD_ERR_CANT_WRITE, Failed to write to disk, según la docu de PHP).

Al hacer print r($FILES) me dice lo siguiente:

Código:
Array ( [name] => xxxx.jpg 
          [type] => 
         [tmp_name] =>
         [error] => 7 
         [size] => 0 ) )
O sea, que por lo que veo, ya en primera instancia no reconoce el archivo subido (tmp_name=0 size=0) temporalmente, descartando cualquier relación del problema con la carpeta de destino (tengo todos los max_size etc altos para que no haya problemas, además las fotos no son muy bestias de grandes)

Os pego el trozo de código, aunque no tiene ningún secreto.

Código PHP:
Ver original
  1. if(!empty($_FILES["imagen"])) {
  2.              print_r($_FILES);
  3.          $uploadfile = $ruta . $_FILES['imagen']['name'];
  4.          if (move_uploaded_file($_FILES['imagen']['tmp_name'],$uploadfile))
  5.             {
  6.                 echo ('imagen subida');
  7.             } else  {
  8.                 echo 'ERROR'
  9.             }
  10. }



Supongo que tiene algo que ver con el lugar donde se guardan temporalmente los archivos antes de ser subidos, en realidad no lo sé, pero esa es la conclusión que he sacado, aunque ahora mismo anda muy perdido.

Agradeceré cualquier ayuda,

Un saludo,
  #2 (permalink)  
Antiguo 16/08/2010, 09:29
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 9 meses
Puntos: 55
Respuesta: Problema extraño con move_uploaded_file

- no habrás borrado la carpeta temporal o modificado los permisos para que no se pueda escribir en ella o limitado el espacio máximo de la carpeta tmp ?

- en el form no borraste el enctype="multipart/form-data" ?
  #3 (permalink)  
Antiguo 16/08/2010, 09:37
Avatar de Kenichi  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 160
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: Problema extraño con move_uploaded_file

la ruta termina con /?
Porque si no, nunca va a poder copiar el archivo a la carpeta $ruta
__________________
Cansado de tener que hacer webs con doble login, o no entender nada del codigo de phpBB? Usa un sistema de foros simple, usa Linken Foros
  #4 (permalink)  
Antiguo 16/08/2010, 10:04
 
Fecha de Ingreso: agosto-2010
Mensajes: 5
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema extraño con move_uploaded_file

Gracias por responder Kenichi.
Si, la ruta está bien, termina en "/".
El código no le toqué nada, está igual que cuando funcionaba perfectamente unas horas antes.

Death_Empire, gracias también, el form está en multipart/form data efectivamente.

Sobre tu primera apreciación siento más curiosidad.
Cuál se supone que es la carpeta temporal?

Estamos hablando de una temporal a nivel de servidor o sólo de mi usuario en el plan de hosting? En el plan de mi cliente no tengo acceso a consola de servidor.

Hay algún directorio por defecto? Perdonadme pero es que ando muy perdido en este tema, he usado este script decenas de veces en muchas webs y nunca me había dado ningún problema.

Gracias de nuevo.
  #5 (permalink)  
Antiguo 16/08/2010, 10:39
Avatar de Kenichi  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 160
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: Problema extraño con move_uploaded_file

Y esa carpeta $ruta tiene permisos de escritura chmod 777?
__________________
Cansado de tener que hacer webs con doble login, o no entender nada del codigo de phpBB? Usa un sistema de foros simple, usa Linken Foros
  #6 (permalink)  
Antiguo 16/08/2010, 12:58
 
Fecha de Ingreso: agosto-2010
Mensajes: 5
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema extraño con move_uploaded_file

Si si, todo está en orden, como te dije creo que el problema no está en la carpeta de destino, ni en lo que es la ruta, ni en los permisos de escritura, ni siquiera en ninguna restricción sobre tamaños de subida ni parámetros de PHP.

El problema tiene que estar en el origen, en la primera parte del proceso, ya que si saco por pantalla el $FILES[tmp_name] no me saca nada, si saco el [size] me da cero, y el tipo de error que da (7) es tan poco frecuente que apenas he encontrado casos parecidos buscando en Internet. LA mayor parte de consultas relacionadas con el tema de move_uploaded_file se resolverían con los primeros consejos que me habéis dado.
En resumen, es como si el archivo de imagen que yo selecciono para subir (he probado con muchos distintos) no existiera!!

Yo sigo buscando y os agradezco el interés.

Saludos.

Etiquetas: extraño
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 12:11.