[Php-avanzado] ruta ftp

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Mar Mayo 7 16:28:15 ART 2013


Esto es porque las rutas vistas desde el FTP, no tienen la misma raíz
que vistas por un script PHP, que puede ver todo el disco.


PD: perdón, pero sigo sin entender qué tiee que ver una conexión FTP en
todo esto... sin ese contexto, parece que estás haciendo las cosas o
innecesariamente complicadas o con errores de concepto.
El script se conecta al propio servidor (localhost) o se conecta a una
máquina remota?


El mar, 07-05-2013 a las 12:13 -0700, Damián Colledani escribió:
> Si, entendí ahora lo modifique pero me tira errores en chmod me dice
> que no existe directorio, sin embargo me muestra los archivos que
> quiero bajar cuando me tira el error de ftp_get()
> ahi va
> $dir_local= mkdir("c:/fotos_".date('d-m-Y'),0777);
> $dir=$_POST['carpeta'];
> $nombre_usuario_ftp=$_POST["usuario"];
> $contrasenya_ftp=$_POST["clave"];
> $servidor_ftp=$_POST["servidor"];
> $id_con = ftp_connect($servidor_ftp,21) or die("No ha sido posible
> conectarse a $servidor_ftp");
> ftp_login($id_con,$nombre_usuario_ftp,$contrasenya_ftp); //Se loguea
> al Servidor FTP
> ftp_pasv($id_con,MODO); //Establece el modo de conexión
> $newdir = "/public_html/".$dir."/";
> chmod($newdir,777);
> $list = ftp_nlist($id_con, $newdir);
> $cant=count($list);
> 
> for($i=0;$i<$cant;$i++ ){
> 
> $file = ftp_get($id_con, $dir_local."/".$list[$i], $newdir.$list[$i],
> FTP_BINARY);
> }
> if ($cant == 0){
> echo "El directorio no existe en el servidor";
> }
> ///el error es 
> Warning: chmod() [function.chmod]: No such file or directory in C:
> \wamp\www\vortex\formulario-descarga-archivos.php on line 49
> 
> Warning: ftp_get() [function.ftp-get]: I can only retrieve regular
> files in C:\wamp\www\vortex\formulario-descarga-archivos.php on
> line 55
> 
> Warning: ftp_get(1/..) [function.ftp-get]: failed to open stream:
> Permission denied in C:\wamp\www\vortex
> \formulario-descarga-archivos.php on line 55
> 
> Warning: ftp_get() [function.ftp-get]: Error opening 1/.. in C:\wamp
> \www\vortex\formulario-descarga-archivos.php on line 55
> 
> Warning: ftp_get(1/Foto0522.jpg) [function.ftp-get]: failed to open
> stream: No such file or directory in C:\wamp\www\vortex
> \formulario-descarga-archivos.phpon line 55
> 
> etc por cada archivo
> Agradezco la ayuda
> 
> --- El mar 7-may-13, Leonardo Tadei - Pegasus Tech Supply
> <leonardot en pegasusnet.com.ar> escribió:
>         
>         De: Leonardo Tadei - Pegasus Tech Supply
>         <leonardot en pegasusnet.com.ar>
>         Asunto: Re: [Php-avanzado] ruta ftp
>         Para: "Lista del curso de PHP Avanzado"
>         <php-avanzado en pato2.fi.mdp.edu.ar>
>         Fecha: martes, 7 de mayo de 2013, 14:40
>         
>         Hola Damián,
>         
>             estás empezando la ruta con / en /public_html/ con lo que
>         le estás
>         diciendo que public_html están en la raíz del disco, y lo más
>         habitual
>         es que esté en /home/usuario
>         
>             Lo mejor para estos casos es entrar por FTP, ver qué
>         nombres tienen los
>         directorios, y luego escribir rutas relativas (no absolutas)
>         en dónde
>         trabajar.
>         
>             Sin embargo, acá no hacés ningún upload ni download por
>         FTP, con lo que
>         te conviene usar directamente las funciones de manejo de disco
>         y
>         archivos, ya que no le estás dando ningún uso al FTP.
>         
>             Para terminar, salvo que estés usando alguna versión muy
>         vieja de PHP,
>         es más simple la función scandir() que te devuelve un vector,
>         que
>         trabajar con opendir() que te obliga luego a recorrer el
>         directorio.
>         
>             Salu2!
>         
>         
>         El mar, 07-05-2013 a las 06:28 -0700, Damián Colledani
>         escribió:
>         > Alguien me puede decir como saber la ruta a los archivos que
>         debo
>         > descargar via ftp?
>         > Teoricamente estan en /public_html/ pero el directorio que
>         consulto
>         > con is_dir me dice que no existe
>         > Mando todo el script por si acaso Gracias
>         > 
>         > 
>         > $nombre_usuario_ftp=$_POST["usuario"];
>         > $contrasenya_ftp=$_POST["clave"];
>         > $servidor_ftp=$_POST["servidor"];
>         > $id_con = ftp_connect($servidor_ftp,21) or die("No ha sido
>         posible
>         > conectarse a $servidor_ftp");
>         > 
>         > 
>         > $carpeta="/public_html/".$_POST["carpeta"]."/";
>         > if (ftp_login($id_con, $nombre_usuario_ftp,
>         $contrasenya_ftp)){
>         > echo "Conectado en $nombre_usuario_ftp@$servidor_ftp "; 
>         > 
>         > if (is_dir($carpeta)==true)
>         > { 
>         > echo "<br> Existe carpeta";
>         > $abredir=opendir($carpeta);   //abro el directorio y recorro
>         el
>         > directorio buscando los archivo
>         > echo "<br> Abrio carpeta";
>         > while (false!==($nombre_archivo=readdir($abredir)))
>         > {
>         > if (($nombre_archivo !== ".") && ($nombre_archivo !== ".."))
>         >   //valido que no sean . ni ..
>         > {   
>         > //if($aux==$nombre_archivo)
>         > //{
>         > //return $aux;
>         > DescargarArchivo($nombre_archivo);
>         > 
>         > //}
>         > }
>         > }
>         > }else{
>         > echo "La Carpeta no Existe";
>         > }
>         > }
>         > 
>         > 
>         > function DescargarArchivo($fichero){
>         > 
>         > 
>         > $basefichero = basename($fichero);
>         > 
>         > 
>         > header( "Content-Type: application/octet-stream");
>         > 
>         > 
>         > header( "Content-Length: ".filesize($fichero));
>         > 
>         > 
>         >
>         header( "Content-Disposition:attachment;filename=".$basefichero);
>         > readfile($fichero);
>         > }
>         > }
>         > _______________________________________________
>         > Php-avanzado mailing list
>         > Php-avanzado en pato2.fi.mdp.edu.ar
>         >
>         http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>         
>         -- 
>         
>         Leonardo Tadei
>         leonardot en pegasusnet.com.ar
>         Pegasus Tech Supply
>         Tel: (+54)(+223) 471-2880
>         La Salle 1131 - Mar del Plata - Argentina
>         http://www.pegasusnet.com.ar
>         http://www.grupopegasus.com
>         Firma pública:
>         http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>         
>         _______________________________________________
>         Php-avanzado mailing list
>         Php-avanzado en pato2.fi.mdp.edu.ar
>         http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>         
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado

-- 

Leonardo Tadei
leonardot en pegasusnet.com.ar
Pegasus Tech Supply
Tel: (+54)(+223) 471-2880
La Salle 1131 - Mar del Plata - Argentina
http://www.pegasusnet.com.ar
http://www.grupopegasus.com
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



Más información sobre la lista de distribución Php-avanzado