Foros del Web » Programando para Internet » PHP »

Error con move_uploaded_file

Estas en el tema de Error con move_uploaded_file en el foro de PHP en Foros del Web. Hola! Estoy teniendo un extraño error que no pude resolver. De hecho, un amigo mío está tieniendo este error cuando trata de subir una imágen ...
  #1 (permalink)  
Antiguo 16/08/2011, 07:37
 
Fecha de Ingreso: agosto-2011
Mensajes: 11
Antigüedad: 12 años, 8 meses
Puntos: 1
Error con move_uploaded_file

Hola! Estoy teniendo un extraño error que no pude resolver. De hecho, un amigo mío está tieniendo este error cuando trata de subir una imágen a mi sitio:

Cita:
Warning: move_uploaded_file(galeria//tmp/php1Qlgnx) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/coleccion/domains/coleccion.com/public_html/upload2.php on line 86

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/php1Qlgnx' to 'galeria//tmp/php1Qlgnx' in /home/coleccion/domains/coleccion.com/public_html/upload2.php on line 86

Warning: imagecreatefromjpeg(galeria//tmp/php1Qlgnx) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /home/coleccion/domains/coleccion.com/public_html/upload2.php on line 11
Antes me dijo que le mandaba una advertencia acerca de un archivo "pjpeg" y leí que esto tiene que ver con el navegador IE. Arreglé ese error y ahora estoy con este, el problema es que yo puedo cargar imágenes correctamente desde IE o Firefox, el error solo le aparece a él.

Lo único que noté que se ve extraño es la doble diagonal "//" despues de galeria, no tengo idea de por qué está pasando eso porque yo si puedo cargar archivos bien. El ya trató con diferentes archivos y sigue recibiendo el error.

Si alguien me puede ayudar o sugerir algo sería de mucha ayuda. Gracias!
  #2 (permalink)  
Antiguo 16/08/2011, 07:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Error con move_uploaded_file

Sin ver el código que utilizas es complicado que te podamos ayudar.

Saludos.
  #3 (permalink)  
Antiguo 16/08/2011, 07:53
 
Fecha de Ingreso: agosto-2011
Mensajes: 11
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Error con move_uploaded_file

Oh, perdón ^^u
Es un poco largo, pero lo pondré todo por si acaso. Recién aprendí php así que hay cosas que probablemente no estén hechas de la mejor manera (me da pena mostrar mi cógigo xP)

Cita:
<?php
function thumb($getfoto,$getname,$getdir){
// thumb(Ubicacion de la foto, Nombre de la foto, Directorio de thumbnails)
$original=imagecreatefromjpeg($getfoto);
$original_x=imagesx($original);
$original_y=imagesy($original);
if($original_x>$original_y){
define('ANCHO', 200);
$alto_destino=round($original_y * ANCHO / $original_x, 0);
$destino=imagecreatetruecolor(ANCHO, $alto_destino);
imagecopyresampled($destino, $original, 0, 0, 0, 0, ANCHO, $alto_destino, $original_x, $original_y);
}
else{
define('ALTO', 200);
$ancho_destino=round($original_x * ALTO / $original_y, 0);
$destino=imagecreatetruecolor($ancho_destino, ALTO);
imagecopyresampled($destino, $original, 0, 0, 0, 0, $ancho_destino, ALTO, $original_x, $original_y);
}

$dirthumbnail=$getdir.$getname;
imagejpeg($destino,$dirthumbnail,75);

imagedestroy($destino);
imagedestroy($original);
}
function comprobar_url($url){
$url_valida=0;
//compruebo unas cosas primeras
if ((strpos($url,'linkbucks')===false) && (strpos($url,'usercash')===false) && (strpos($url,'lix.in')===false) && (strpos($url,'urlcash')===false)){
if((substr_count($url,"http://") == 1) && (substr($url,0,7) == "http://")){
$url_valida=1;
}
else{
echo "Error: Revisa que la direccion este escrita correctamente";
}
}
else{
echo "Error: No se permite ese tipo de direccion";
}
return $url_valida;
}
//Start
$conexion=mysql_connect("localhost","coleccionr_ro ot","mihoU15") or die("Error al conectar.");
mysql_select_db("coleccionr_1",$conexion) or die("Error al seleccionar base de datos");
if($_REQUEST['set']==1){ // Carga de sets
$registros=mysql_query("select * from galeria_fotos where foto_id='$_REQUEST[preview]'",$conexion);
if($reg=mysql_fetch_array($registros)){
if(comprobar_url($_REQUEST['link'])==1){
mysql_query("insert into galeria_sets(img_id,set_desc,set_cat,link,autor) values($_REQUEST[preview],'$_REQUEST[desc_set]','$_REQUEST[categoria]','$_REQUEST[link]','$_REQUEST[autor]'",$conexion);
$ok=1;
}
}
else{
echo "No hay imagen con esa ID para la vista previa";
}
}
else{ // Carga de imagenes
$tipo=$_FILES['foto']['type'];
if($_FILES['foto']['size']>0){
if($tipo!="image/jpeg" && $tipo!="image/pjpeg"/* && $tipo!="image/gif"*/){
echo "La foto es de un tipo no permitido: ".$tipo."<br>";
}
else {
// Great the file is an image, we will add this file
mysql_query("insert into galeria_fotos(foto_nombre,foto_desc,foto_cat,autor ) values('0','$_REQUEST[descripcion]','$_REQUEST[categoria]',$_REQUEST[autor])",$conexion) or die("Error en el query: ".mysql_error());
$new_id=mysql_insert_id(); // New Id generated
if($tipo=="image/jpeg"){
$foto=$new_id.".jpg";
}
elseif($tipo=="image/gif"){
$foto=$new_id.".gif";
}
// let's update the filename now
mysql_query("update galeria_fotos set foto_nombre='$foto' where foto_id='$new_id'",$conexion);
// Hora de guardar el archivo
$temp=$_FILES['foto']['tmp_name'];
$dir="galeria/";
$dirthu="thumbs/";
move_uploaded_file($temp,$dir.$foto);
thumb($dir.$foto,$foto,$dirthu);
$ok=1;
}
}
}
mysql_close($conexion);
if($ok==1){
echo "Carga exitosa!<br><br><a href=\"upload.php?cat=".$_REQUEST['categoria']."\" style=\"text-decoration:none\"> Cargar mas</a><br>
<a href=\"imagenes.php?cat=".$_REQUEST['categoria']."\" style=\"text-decoration:none\"> Volver a la galeria </a>";
}
?>
Las lineas de error son cerca del final donde puse "// Hora de guardar el archivo", creo que hice un enredo
  #4 (permalink)  
Antiguo 16/08/2011, 07:59
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Error con move_uploaded_file

El fichero que estás mostrando está en la misma carpeta que la carpeta "galeria"?
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #5 (permalink)  
Antiguo 16/08/2011, 08:04
 
Fecha de Ingreso: agosto-2011
Mensajes: 11
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Error con move_uploaded_file

No muestra nada, solo toma un archivo de un formulario y trata de guardarlo desde la carpeta temporal hacia "galeria/##.jpg"
Se dice fácil para ese montón de codigo x) Aparte genera thumbnails, guarda unos datos en el registro, etc.
  #6 (permalink)  
Antiguo 16/08/2011, 08:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Error con move_uploaded_file

Es probable que tengas register_globals en On, ¿podrías verificar eso? ya que por eso te da ese error al usar $foto.

Saludos.
  #7 (permalink)  
Antiguo 16/08/2011, 08:07
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Error con move_uploaded_file

Muy bien, pero repito mi pregunta, el fichero ese (que se llamara upload2.php) está en la misma carpeta que la carpeta "galeria"?
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #8 (permalink)  
Antiguo 16/08/2011, 08:10
 
Fecha de Ingreso: agosto-2011
Mensajes: 11
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Error con move_uploaded_file

Cita:
Iniciado por GatorV Ver Mensaje
Es probable que tengas register_globals en On, ¿podrías verificar eso? ya que por eso te da ese error al usar $foto.

Saludos.
Oh, este... ¿dónde verifico eso?


Cita:
Iniciado por vgonga1986 Ver Mensaje
Muy bien, pero repito mi pregunta, el fichero ese (que se llamara upload2.php) está en la misma carpeta que la carpeta "galeria"?
Ah, si, claro que si, si comentaba que a mí no me marca error, se lo marca a un compañero usando el Internet Explorer
  #9 (permalink)  
Antiguo 16/08/2011, 08:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Error con move_uploaded_file

Crea un script que te imprima el phpinfo(); Así puedes ver todas las configuraciones de tu script.

Saludos.
  #10 (permalink)  
Antiguo 16/08/2011, 08:33
 
Fecha de Ingreso: agosto-2011
Mensajes: 11
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Error con move_uploaded_file

Ah, si, esta On! ... ¿Eso es malo? :P
  #11 (permalink)  
Antiguo 16/08/2011, 09:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Error con move_uploaded_file

Pues sí, porque eso hace que las variables de entrada se conviertan en variables locales, es por eso que $foto te da el path temporal, también tienes un error aqui:
Código PHP:
Ver original
  1. if($tipo=="image/jpeg"){
  2. $foto=$new_id.".jpg";
  3. }
  4. elseif($tipo=="image/gif"){
  5. $foto=$new_id.".gif";
  6. }

Si te fijas no estas comparando por image/jpeg y por eso $foto se queda con el valor temporal.

Te recomiendo trabajes con register_globals en Off ya que es un riesgo de seguridad.

Saludos.
  #12 (permalink)  
Antiguo 16/08/2011, 10:44
 
Fecha de Ingreso: agosto-2011
Mensajes: 11
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Error con move_uploaded_file

Cita:
Iniciado por GatorV Ver Mensaje
Pues sí, porque eso hace que las variables de entrada se conviertan en variables locales, es por eso que $foto te da el path temporal, también tienes un error aqui:
Código PHP:
Ver original
  1. if($tipo=="image/jpeg"){
  2. $foto=$new_id.".jpg";
  3. }
  4. elseif($tipo=="image/gif"){
  5. $foto=$new_id.".gif";
  6. }

Si te fijas no estas comparando por image/jpeg y por eso $foto se queda con el valor temporal.

Te recomiendo trabajes con register_globals en Off ya que es un riesgo de seguridad.

Saludos.
Que quieres decir con que no estoy comparando por image/jpeg? Perdona si no es muy obvio para mi porque todavia estoy aprendiendo.
Por cierto, modifique register_globals y ahora arroja un error diferente, en fin muy parecido.

Cita:
Warning: move_uploaded_file(galeria/) [function.move-uploaded-file]: failed to open stream: Is a directory in /home/coleccionr/domains/coleccionr.com/public_html/upload2.php on line 86

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phppcsbej' to 'galeria/' in /home/coleccionr/domains/coleccionr.com/public_html/upload2.php on line 86

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error: in /home/coleccionr/domains/coleccionr.com/public_html/upload2.php on line 11
Nota: El error solo se lo da a él, a mi no por alguna extraña razón.
  #13 (permalink)  
Antiguo 16/08/2011, 11:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Error con move_uploaded_file

Es por lo que te digo, el primer IF esta correcto que modificaste para tú amigo:
Código PHP:
Ver original
  1. if($tipo!="image/jpeg" && $tipo!="image/pjpeg"/* && $tipo!="image/gif"*/){
  2. echo "La foto es de un tipo no permitido: ".$tipo."<br>";
  3. }

Agregaste a $tipo el image/pjpeg, pero posteriormente al construir el nombre de la imagen:
Código PHP:
Ver original
  1. if($tipo=="image/jpeg"){
  2. $foto=$new_id.".jpg";
  3. }
  4. elseif($tipo=="image/gif"){
  5. $foto=$new_id.".gif";
  6. }

Solo comparas por "image/jpeg", o "image/gif" tendrías que comparar ahí también por "image/pjpeg".

Saludos.

Etiquetas: html
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:36.