Foros del Web » Programando para Internet » PHP »

Problema al subir archivos

Estas en el tema de Problema al subir archivos en el foro de PHP en Foros del Web. ¡Hola! Es mi primer mensaje en el foro... Para empezar, felicitar a los Admins y colaboradores del foro, ya que muchas de las dudas que ...
  #1 (permalink)  
Antiguo 21/09/2007, 12:35
 
Fecha de Ingreso: septiembre-2007
Mensajes: 3
Antigüedad: 16 años, 6 meses
Puntos: 0
Problema al subir archivos

¡Hola!
Es mi primer mensaje en el foro... Para empezar, felicitar a los Admins y colaboradores del foro, ya que muchas de las dudas que tengo al programar PHP las soluciono en estos foros

Bien, estoy teniendo un problema al subir archivos a un FTP. Tenía el código programado, y ejecutándolo en mi ordenador con un servidor Apache funcionaba perfectamente. Ahora, al subirlo, no consigo hacerlo funcionar.

Primero no me dejaba crear ni siquiera las carpetas, pero configurando el chmod de algunos directorios he conseguido que ésto funcione.

Ahora mi problema está en que consigo subir los archivos al mismo directorio donde tengo el código de subida de archivos, pero no consigo subirlos o moverlos a la carpeta en la que tienen que estar.
Os lo aclaro, los consigo subir a ROOT/httpdocs/admin/ (ya que con el move_uploaded_file lo pongo como move_uploaded_file($_FILES['foto1']['tmp_name'], "1.jpg");), pero yo lo quiero subir o mover a ROOT/httpdocs/fotospisos/id_variable (la ID variable la cojo como el último registro de la base de datos con mysql_insert_id(), y el move_uploaded_file me queda como move_uploaded_file($_FILES['foto1']['tmp_name'], "../fotospisos/".mysql_insert_id()."/1.jpg");)

Aquí os dejo el código de la página de insercción de datos a la base de datos, que además es la que al final tiene el código para subir las imágenes:
Código PHP:
<?php
include ("conex.php");

$operacion=$_POST["operacion"];
$propiedad=$_POST["propiedad"];
$propietario=$_POST["propietario"];
$telefono1=$_POST["telefono1"];
$telefono2=$_POST["telefono2"];
$domicilio=$_POST["domicilio"];
$provincia=$_POST["provincia"];
$zona=$_POST["zona"];
if(
$zona!="Zona (Sólo para Madrid)"){$zona2=$_POST["zona"];} else{$zona2="";}
$CP=$_POST["CP"];
$mconst=$_POST["mconst"];
$mutil=$_POST["mutil"];
$habitaciones=$_POST["habitaciones"];
$baños=$_POST["baños"];
$cocina=$_POST["cocina"];
$salon=$_POST["salon"];
$suelos=$_POST["suelos"];
$pprincipal=$_POST["pprincipal"];
$puertas=$_POST["puertas"];
$ventanas=$_POST["ventanas"];
$paredes=$_POST["paredes"];
$ascensor=$_POST["ascensor"];
$conserje=$_POST["conserje"];
$trastero=$_POST["trastero"];
$garaje=$_POST["garaje"];
$piscina=$_POST["piscina"];
$zcomunes=$_POST["zcomunes"];
$antiguedad=$_POST["antiguedad"];
$ppropietario=$_POST["ppropietario"];
$pventa=$_POST["pventa"];
$observaciones=$_POST["observaciones"];
$dfoto1=$_POST["dfoto1"];
$dfoto2=$_POST["dfoto2"];
$dfoto3=$_POST["dfoto3"];
$dfoto4=$_POST["dfoto4"];
$dfoto5=$_POST["dfoto5"];

if(
$operacion=="Tipo de operación" or $propiedad=="Tipo de propiedad" or $propietario==NULL or $telefono1==NULL or $domicilio==NULL or $provincia=="Provincia" or $CP==NULL or $mconst==NULL or $mutil==NULL or $habitaciones==NULL or $baños==NULL or $cocina==NULL or $salon==NULL or $suelos==NULL or $pprincipal==NULL or $puertas==NULL or $ventanas==NULL or $paredes==NULL or $ascensor==NULL or $conserje==NULL or $trastero==NULL or $garaje==NULL or $piscina==NULL or $zcomunes==NULL or $antiguedad==NULL or $ppropietario==NULL or $pventa==NULL){echo '<p align="center">Todos los campos marcados con asteriscos (*) son obligatorios.<br /> <strong><a href="javascript:history.go(-1)">Volver</a></strong></p>';
}
else{
if(!(
mysql_query("insert into pisos (Estado,Operacion,Propiedad,Propietario,Telefono1,Telefono2,Domicilio,Provincia,CP,MConstruidos,MUtiles,Zona,Habitaciones,Baños,Cocina,Salon,Suelos,PuertaPrincipal,Puertas,Ventanas,Paredes,Ascensor,Conserje,Garaje,Trastero,Piscina,ZonasComunes,Antiguedad,PrecioPropietario,PrecioVenta,Observacion,Foto1,Foto2,Foto3,Foto4,Foto5) values ('Disponible','$operacion','$propiedad','$propietario','$telefono1','$telefono2','$domicilio','$provincia','$CP','$mconst','$mutil','$zona2','$habitaciones','$baños','$cocina','$salon','$suelos','$pprincipal','$puertas','$ventanas','$paredes','$ascensor','$conserje','$garaje','$trastero','$piscina','$zcomunes','$antiguedad','$ppropietario','$pventa','$observaciones','$dfoto1','$dfoto2','$dfoto3','$dfoto4','$dfoto5')",$db)))
{echo 
'<p align="center">Imposible conectar a la base de datos. Inténtalo de nuevo pasados unos minutos.<br /> <strong><a href="javascript:history.go(-1)">Volver</a></strong></p>';}
else{echo 
'<p align="center">Operación realizada con éxito.<br /> <strong><a href="index2.php?c=OK">Volver al Panel de Control</a></strong></p>';

mkdir("../admin/fotospisos/".mysql_insert_id(),0777);
chmod("../admin/fotospisos/".mysql_insert_id(),0777);

move_uploaded_file($_FILES['foto1']['tmp_name'], "../admin/fotospisos/".mysql_insert_id()."/1.jpg");
move_uploaded_file($_FILES['foto2']['tmp_name'], "../admin/fotospisos/".mysql_insert_id()."/2.jpg");
move_uploaded_file($_FILES['foto3']['tmp_name'], "../admin/fotospisos/".mysql_insert_id()."/3.jpg");
move_uploaded_file($_FILES['foto4']['tmp_name'], "../admin/fotospisos/".mysql_insert_id()."/4.jpg");
move_uploaded_file($_FILES['foto5']['tmp_name'], "../admin/fotospisos/".mysql_insert_id()."/5.jpg");
}
}
?>
Como podéis comprobar, es para una web de una inmobiliaria.

Bueno, espero que podáis ayudarme, porque ya me estoy volviendo loco de buscar soluciones

¡Gracias de antemano!

Un saludo,
Darkun.
  #2 (permalink)  
Antiguo 22/09/2007, 20:18
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema al subir archivos

EL código está bien, ¿cuál es el error exacto que te muestra?
Además, ¿estás seguro de que tu programa tiene privilegios para poner a 777 los permisos de la carpeta que crea?
Para que tenga esos privilegios es necesario que la carpeta fotospisos también tenga permisos 777

Dado que le estás pasando a mkdir el valor de los permisos, la línea con el chmod es redundante. Además, 777 son los permisos por defecto, así que tampoco hay necesidad de especificarlo.


Saludos.
  #3 (permalink)  
Antiguo 23/09/2007, 08:27
 
Fecha de Ingreso: septiembre-2007
Mensajes: 3
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Problema al subir archivos

He comprobado los permisos desde el FTP, y están a 777. El chmod está puesto porque aunque en el mkdir le digo que cree la carpeta con 777, la crea con 755 aunque le indique otra cosa... No se porqué, pero pasa.
Además, no me muestra ningún error, es como si las subiera pero luego no están en el FTP, es rarísimo.
Acabo de comprobar también si están las demás carpetas anteriores como fotospisos con permisos 777, y está todo correcto.
Realmente no se lo que puede pasar, porque la carpeta la crea perfectamente pero no sube las imágenes...

Lo que más me extraña es que si le digo que los suba a la misma carpeta donde tengo el archivo .php que tiene el código no me da problemas, el problema viene cuando le pongo en el move_uploaded_file un directorio de destino.

EDIT: He estado haciendo más pruebas, y creo que he descubierto el error: el comando chmod le pone los permisos 777 a la carpeta, pero aún así no suben los archivos. Si creo una carpeta manualmente, y le pongo los permisos 777 manualmente, sí me deja subir los archivos. Ahora, la pregunta: ¿hay alguna otra manera de cambiar los permisos a la carpeta, o hay algún comando que proporcione los mismos permisos que un chmod manual?

Gracias de antemano.

Última edición por Darkun; 23/09/2007 a las 09:22
  #4 (permalink)  
Antiguo 23/09/2007, 12:29
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Problema al subir archivos

que buen código, no tendras´que poner 777 en vez de 0777?

podrías mostrar como imprimes los resultados de esa consulta? esta buenísimo tu código.
  #5 (permalink)  
Antiguo 23/09/2007, 14:38
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: Problema al subir archivos

podes ejecutar un comando del sistema con exec
  #6 (permalink)  
Antiguo 23/09/2007, 15:07
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema al subir archivos

Darkun,

¿estás seguro de que no hay error? creo que deberías probar poniendo
Código PHP:
error_reporting(E_ALL);
ini_set('display_errors'true); 
al principio de tu programa para que te muestre cualquier problema que ocurra.

Siempre es bueno tenerlo activado cuando se programa y desactivarlo (poner error reporting a 0) cuando se termina el programa.

En cualquier caso, quizás sea un problema de restricciones de seguridad, o de permisos de usuario. Aunque es muy extraño que no haga lo que le pedís y aún así no muestre un error.

miczoe,
Los permisos son 0777 y no 777 porque es un número octal, no decimal. Se trata de permisos de archivos de Unix. Quizás quieras leer sobre esto en la Wikipedia: Permisos de acceso a archivos

Seppo,
Lamentablemente aunque la solución de exec es correcta, muchas veces está deshabilitada por las empresas de alojamiento. De todas formas "no debería" haber diferencias entre el funcionamiento de chmod() y la ejecución de "exec chmod..."


saludos.
  #7 (permalink)  
Antiguo 23/09/2007, 15:54
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Problema al subir archivos

gracias me calrificó el tema. sino que siempre modificaba los permisos desde el ftp entonces le daba 755 o 777, etc.
esto me ayuda a aprender, que es lo mas importante.
  #8 (permalink)  
Antiguo 23/09/2007, 15:58
 
Fecha de Ingreso: septiembre-2007
Mensajes: 3
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Problema al subir archivos

Gracias a todos por las respuestas, en cuanto tenga tiempo las pruebo todas y os comento algo

Un saludo.
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:05.