Foros del Web » Programando para Internet » PHP »

Problema con subir imágenes con PHP + MySQL y Debian.

Estas en el tema de Problema con subir imágenes con PHP + MySQL y Debian. en el foro de PHP en Foros del Web. Buenas, buenas compañeros del foro. Primero que todo un saludo a todos. Bueno, con respecto al problema, es el siguiente: muchas de las ayudas que ...
  #1 (permalink)  
Antiguo 31/03/2014, 14:19
 
Fecha de Ingreso: agosto-2012
Mensajes: 8
Antigüedad: 11 años, 7 meses
Puntos: 0
Problema con subir imágenes con PHP + MySQL y Debian.

Buenas, buenas compañeros del foro. Primero que todo un saludo a todos.
Bueno, con respecto al problema, es el siguiente: muchas de las ayudas que he visto acá, consejos y demás, se habla de subir una imagen a una carpeta dentro del sistema y agregar la ruta a la base de datos, hasta ahí todo bien, el problema está en que no he podido lograrlo. Básicamente he hecho lo siguiente:
  • Cree la carpeta /var/www/Imagenes
  • Le di permisos de lectura y escritura.
  • Hice el código en HTML+PHP (el más básico).
No obstante nunca me ha funcionado, ni siquiera he estado cerca. He probado con los ejemplos que dan acá y nada. Tuve códigos muy complejos, pero tampoco logré nada.
El código en HTLM es:
Código HTML:
<html>
<body>
	<form action="recibir.php" method="POST" enctype="multipar/form-data">
		<input type="file" name="imagen">
		
		<br><br>
		
		<input type="submit" value="Enviar">
	</form>
</body>

</html> 
Código PHP:
<?php
    $Ruta 
"/var/www/Imagenes";
    
$Archivo $_FILES['imagen']['tmp_name'];
    
$NombreArchivo $_FILES['imagen']['name'];
    
move_uploaded_file($Archivo,$Ruta.'/'.$NombreArchivo);
    
    
$Ruta $Ruta '/' $NombreArchivo;
    
    echo 
$Ruta;
?>
Espero me puedan ayudar. Gracias.
  #2 (permalink)  
Antiguo 31/03/2014, 16:10
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Problema con subir imágenes con PHP + MySQL y Debian.

Holas,

A veces es sino vemos los errores en pantalla es mejor tambien revisar los logs de errores, ahora una consulta, como te aseguras que exista o no realmente la ruta:

Código PHP:
Ver original
  1. $Ruta.'/'.$NombreArchivo

Conoces una funcion para asegurarte que exista esa ruta? o es correcta esa ruta? :

http://www.php.net/manual/es/function.file-exists.php

A simple vista no se si tendras la ruta correcta pero /var/www/Imagenes podria ser que lo correcto sea:
/var/www/html/Imagenes. Recuerda que en linux los nombres de archivos y directorios son sensibles a mayusculas y minisculas.

Ya nos cuentas,

Saludos,
__________________
.: Gildus :.
  #3 (permalink)  
Antiguo 31/03/2014, 16:58
 
Fecha de Ingreso: diciembre-2009
Mensajes: 15
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Problema con subir imágenes con PHP + MySQL y Debian.

Quizá un print_r de la variable $_FILES te ayude a encontrar el posible error:
http://bit.ly/1gi7T8D:
Cita:
$_FILES['userfile']['error']

El código de error asociado a esta carga de archivo. Este elemento fue añadido en PHP 4.2.0
Mientras estés programando, una buena técnica para depura es cambiar la directiva error_reporting:
http://bit.ly/1gi8eYQ :
Código PHP:
Ver original
  1. <?php
  2. // Notificar todos los errores de PHP (ver el registro de cambios)
  3. ?>
  #4 (permalink)  
Antiguo 31/03/2014, 19:00
 
Fecha de Ingreso: agosto-2012
Mensajes: 8
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Problema con subir imágenes con PHP + MySQL y Debian.

@gildus

Usé la función cambiando la ruta por la misma que tiene mi ejemplo y dice que sí existe. Aparte, el directorio lo cree yo y a través del entorno de escritorio (zona de pruebas).
¡Gracias por su ayuda!

@814ckf0x

Apliqué los cambios, pero de igual manera, no aparece ninguna notificación de error ni en los logs ni mostrando la información con echo o print...
¡Gracias por su ayuda!

No sé si sirve aclarar que estoy en localhost y que uso Debian Wheezy.

Saludos.
  #5 (permalink)  
Antiguo 01/04/2014, 05:47
 
Fecha de Ingreso: diciembre-2009
Mensajes: 15
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Problema con subir imágenes con PHP + MySQL y Debian.

Cita:
Iniciado por M8Raafnro Ver Mensaje
@gildus

Usé la función cambiando la ruta por la misma que tiene mi ejemplo y dice que sí existe. Aparte, el directorio lo cree yo y a través del entorno de escritorio (zona de pruebas).
¡Gracias por su ayuda!

@814ckf0x

Apliqué los cambios, pero de igual manera, no aparece ninguna notificación de error ni en los logs ni mostrando la información con echo o print...
¡Gracias por su ayuda!

No sé si sirve aclarar que estoy en localhost y que uso Debian Wheezy.

Saludos.
Y al añadir la función print_r que te indiqué, sale la información del archivo?, qué tal un print_r ($_FILES), tal vez tu navegador no está enviando el archivo correctamente, es un error asumir que el archivo es enviado, primero hay que comprobarlo.

Intenta seguir este algoritmo para comprobar si el archivo se envía:
  1. comprobar que la variable $_FILES contiene alguna información
  2. DEBUG: has un print_r de la variable
  3. comprueba que el archivo temporal existe
  4. mueve el archivo temporal a la carpeta indicada (HINT: NUNCA JAMÁS se te ocurra usar el nombre de archivo, una consulta manipulada podría usar maliciosamente el nombre para acceder o sobrescribir otro archivo) así pues este paso tiene una iteración más:
    1. crea un nombre aleatorio para el archivo
    2. comprueba si existe un archivo con ese nombre en la ubicación final, si existe vuelve al paso anterior
    3. mueve el archivo a la ubicación indicada.
  5. comprueba que el archivo se movió correctamente y que existe en la ubicación final.

*El paso marcado como DEBUG se puede saltar para un uso en producción.
  #6 (permalink)  
Antiguo 05/04/2014, 19:03
 
Fecha de Ingreso: agosto-2012
Mensajes: 8
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Problema con subir imágenes con PHP + MySQL y Debian.

@814ckf0x
Gracias por tu dedicación al tema.
Te cuento que le hice el "print" a la variable "files" y obtuve esto:
Código PHP:
print_r ($_FILES);

Array ( ) 
Supongo que no le llega nada Por otro lado, vi los "logs" de errores y me topé con esto:
Código:
PHP Notice:  Undefined index: imagen in /var/www/Imagen/recibir.php on line 3
PHP Notice:  Undefined index: imagen in /var/www/Imagen/recibir.php on line 4
El código de PHP:
Código PHP:
<?php
    $Ruta 
"/var/www/Imagenes";
    
$Archivo $_FILES['imagen']['tmp_name'];
    
$NombreArchivo $_FILES['imagen']['name'];
    
move_uploaded_file($Archivo,$Ruta.'/'.$NombreArchivo);
    
    
$Ruta $Ruta '/' $NombreArchivo;
    
    
print_r ($_FILES);
    
    echo 
$Ruta;
?>
"comprueba que el archivo temporal existe"
Listo.

"mueve el archivo temporal a la carpeta indicada (HINT: NUNCA JAMÁS se te ocurra usar el nombre de archivo, una consulta manipulada podría usar maliciosamente el nombre para acceder o sobrescribir otro archivo) así pues este paso tiene una iteración más:
crea un nombre aleatorio para el archivo
comprueba si existe un archivo con ese nombre en la ubicación final, si existe vuelve al paso anterior
mueve el archivo a la ubicación indicada."

Eso no lo entendí, soy bastante "tieso" en PHP.

¡Muchas gracias, compañero!
  #7 (permalink)  
Antiguo 13/04/2014, 12:52
 
Fecha de Ingreso: agosto-2012
Mensajes: 8
Antigüedad: 11 años, 7 meses
Puntos: 0
Exclamación Respuesta: Problema con subir imágenes con PHP + MySQL y Debian.

Compañeros, tengo otra duda relacionada.
¿Se puede utilizar curl para subir las imágenes o es mejor hacerlo mediante el atributo 'file'? Lo digo porque he intentado con la forma que he visto en más publicaciones acá y en Internet y no he podido lograrlo...
¡Saludos!
  #8 (permalink)  
Antiguo 17/04/2014, 15:10
 
Fecha de Ingreso: agosto-2012
Mensajes: 8
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Problema con subir imágenes con PHP + MySQL y Debian.

Espero el hilo no haya muerto aún :P
Obtuve al final una respuesta -edité el archivo php.ini porque no tenía asignado el directorio temporal- y obtuve esto:

Código PHP:
    
   print_r
($_FILES);
    Array ( [
imagen] => Array ( [name] => perro.jpg [type] => image/jpeg [tmp_name] => /var/tmp/phpOHgjKx [error] => [size] => 18832 ) ) 
Pero la imagen no llega a su destino, a pesar de haber comprobado con "file_exists" que la ruta fuera válida. Creo que algo se avanzó.
Saludos.

El código que tengo es:

Código PHP:
    $Ruta    "../Imagen/Imagenes/";
    
$Nombre $_FILES['imagen']['name'];
    
$Tipo     $_FILES['imagen']['type'];
    
$Tamano $_FILES['imagen']['size'];
    
$Titulo $_REQUEST['cedula'];
    
    
print_r($_FILES);
    if(
file_exists($Ruta)){
        echo 
"Existe";
    }
    
    
move_uploaded_file($_FILES['imagen']['tmp_name'],$Ruta,$Nombre); 

Última edición por M8Raafnro; 17/04/2014 a las 15:15

Etiquetas: html, mysql
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 17:13.