Foros del Web » Programando para Internet » PHP »

FTP con PHP

Estas en el tema de FTP con PHP en el foro de PHP en Foros del Web. Hola amigos Estoy usando un script para acceder a un ftp a traves de php pero no puedo conectar a un ftp externo, es decir, ...
  #1 (permalink)  
Antiguo 03/10/2006, 05:33
 
Fecha de Ingreso: julio-2002
Mensajes: 18
Antigüedad: 21 años, 9 meses
Puntos: 0
FTP con PHP

Hola amigos

Estoy usando un script para acceder a un ftp a traves de php pero no puedo conectar a un ftp externo, es decir, fuera del servidor donde esta el php. Si intento conectar al ftp del propio servidor, lo hace sin problemas.

La pregunta es, ¿hay alguna definicion en php.ini que pueda evitar acceder con php a un ftp externo?

Mil gracias !!
  #2 (permalink)  
Antiguo 03/10/2006, 09:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
En PHP en concreto no .. Si ya puedes usar las funciones del grupo ftp_xxx() la extensión para usar dichas funciones la tienes instalada y funcionado.

Tendrás que revisar otros factores de la conexión. Por ejemplo .. en tu servidor si usas algún firewall/antivirus con esa funcionalidad o Router/proxy por médio .. que tenga abierto los puertos que vas a usar para FTP.

También revisa tu servidor FTP al que te conectas que "modo" usa: Pasivo o Activo (por qué según sea este tendrás que ajustar tus funciones de conexión FTP ftp_connect() ...)

Otro factor a revisar es si ese servidor FTP "remoto" acepta conexiones desde cualquier HOST (IP) .. podría ser que sólo aceptase conexiones locales o de ciertos HOST's.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 03/10/2006, 13:29
 
Fecha de Ingreso: julio-2002
Mensajes: 18
Antigüedad: 21 años, 9 meses
Puntos: 0
Hola Cluster

Bueno, en concreto el FTP al que quiero conectar es a mi propia red, tengo instalado un servidor FTP al que puedo entrar sin problemas desde cualquier otro sitio, por ejemplo desde 3w.web2ftp.com/index.html que imagino utiliza un sistema similar al php.

Con el script que tengo, conecto perfectamente al propio ftp del servidor donde tengo alojada la web, pero si pongo los datos de cualquier otro servidor FTP no funciona, y eso que he probado con muchos.

Pongo aqui el codigo por si encuentras algun fallo, pero ya te digo que al interno del alojamiento web entro sin problemas, por si tiene importancia, decirte que mi version de php es la 4.3.11

Código:
<?

//Hazte cuenta de que puede tardar más de 30 segundos.
set_time_limit(0);

//Conectamos al host
$FtpConn = ftp_connect("servidor",puerto);

//Nos autentificamos como usuarios registrados o anónimos
if(!ftp_login($FtpConn,"usuario","contraseña")){
	echo "No se ha podido realizar la conexión";
	exit;
}

//Obtenemos el directorio actual
$directorio = ftp_pwd($FtpConn);

//Obtenemos el listado del directorio actual
$lista = array();
$lista = ftp_nlist($FtpConn,$directorio);

//Mostramos sus contenidos
echo "<B><CENTER>CONTENIDOS DEL DIRECTORIO / (RAÍZ)</CENTER></B>";

echo "<pre>";
print_r($lista);
echo "</pre>";


//Cambiamos al directorio /pub
if(!ftp_chdir($FtpConn,"pub")){
	echo "Se ha producido un error al entrar en el directorio /pub";
	exit;
}

//Almacenamos el directorio actual
$directorio2 = ftp_pwd($FtpConn);

//Obtenemos el listado del directorio actual
$list = array();
$list = ftp_nlist($FtpConn,$directorio2);

//Mostramos su contenido
echo "<B><CENTER>CONTENIDOS DEL DIRECTORIO /pub</CENTER></B>";

echo "<pre>";
print_r($list);
echo "</pre>";

//Tansferimos un fichero
if(!ftp_get($FtpConn,"test.txt","test.txt",FTP_BINARY)){
	echo "Imposible recuperar fichero test.txt";
	exit;
}

?>
Un saludo
  #4 (permalink)  
Antiguo 03/10/2006, 14:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Lo ideal sería ver el error de conexión. Si el código dices que para un caso funciona .. se supone que está bien. Lo único a tener encuenta es que hay conexiones FTP "pasivas" y "activas" .. No sé cual usas (eso depende de la configuración de tu servidor FTP).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 03/10/2006, 16:39
 
Fecha de Ingreso: julio-2002
Mensajes: 18
Antigüedad: 21 años, 9 meses
Puntos: 0
Cluster, en casa uso el BulletProof FTP Server, y nunca me ha dado problemas de conexion con ninguno de los que lo han usado. No puedo decirte si esta en "pasivo" o "activo" porque no veo encuentro esa configuracion.

El del servidor no puedo decirte si esta en pasivo o activo :(

Te he enviado un privado con direcciones y datos para ver si puedes comprobar el error.

Un saludo
  #6 (permalink)  
Antiguo 03/10/2006, 20:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Por privado me enviastes unos datos de conexión .. Debes comentar aquí en el mensaje del foro público los detalles de este sin entrar a mencionar IP's ni dominos ni contraseñas.

Por ejemplo .. al servidor FTP que te quieres conectar de "tu casa" no usas el puerto standard (21) usas otro.

En algún momento te comenté que revisases tus firewalls y demás dispositivos de red que uses: routers por ejemplo (tuyos o de tu proveedor de acceso a internet) ..

Puedes usar servicios externos como por ejemplo:
http://t1shopper.com/tools/port-scanner/

Así compruebas que el puerto que dices usar para tu servidor FTP esté abierto. Si no lo está .. ya sabes, revisa tus firewalls y dispositivos de conexión a internet, alguno lo está bloqueando.

Lo que compete a PHP, si deces haber probado N códigos con el mismo resultado, ya te puedes imaginar que el problema está en la conexión y no en el código que usas.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 04/10/2006, 00:50
 
Fecha de Ingreso: julio-2002
Mensajes: 18
Antigüedad: 21 años, 9 meses
Puntos: 0
Como tu dices, y tienes toda la razon, voy a copiar el post que te envie por privado incluyendo los datos personales, pensandolo bien tampoco me importa que sean publicos, así quizas alguien mas pueda comprobar el error.

Hola Cluster

Te paso por privado datos mas exactos del error que te comento en el foro y direcciones para ver si puedes darme un poco de luz en este tunel ;)

Aparte del script que puse en el post, he instalado varios mas con los mismos resultados, te paso las direcciones y usuarios que he creado:

(no te asustes por el dominio)

FTP del servidor:
ftp: xxxxxxxx.net
port: xx
user: xxxxxxxx
pass: xxxxxxx

FTP de mi pc:
ftp: xxxxxxxxxx.serveftp.net

Perdon, aqui me he equivocado, no es .net, sino .com

ftp: xxxxxxxxx.serveftp.com

port: xx
user: xxxxxx
pass: xxxxxx

El del foro 3w.xxxxxxxx.net/php/ftp.php

El del foro apuntando al servidor del hosting 3w.xxxxxxxxx/php/ftpserver.php

He instalado el webFtp con los mismos resultados en 3w.xxxxxxxxxx/webftp/index.php en este ultimo puedes poner tu mismo los datos de conexion.

Ya me diras que se puede sacar en claro de todo esto, necesitaria utilizar el ftp de mi casa porque en el tengo mas de 5 Gigas de fotografias en descarga que no puedo meter en el servidor.

Un saludo
Sobre lo que dices...

Si es cierto que uso un puerto distinto del standar, esto es debido a que en tiempos usando el puerto 21 tenia un monton de intentos de conexion de "dudosa" procedencia, por eso tengo abierto en el router el puerto xx y redirigido a mi pc al puerto 21, el scaner de puertos es transparente porque tengo varios filtros instalados en el router que lo dejan "invisible"

Puedes comprobar con un cliente ftp a conectar y veras como lo haces sin problemas, o bien hazlo desde 3w.web2ftp.com/index.html y conectaras sin incidentes

El error que comentas de estar el servidor abajo cuando probaste, puede ser porque te puse un .net en lugar de un .com, yo acabo de entrar perfectamente desde la direccion 3w.xxxxxxxxxx.net/webftp/index.php pero desde esa misma no puedo entrar en el de casa.

En cambio desde 3w.web2ftp.com/index.html entro en las dos sin ningun problema.

Un saludo

PD: No puedo postear enlaces hasta que no tenga 30 mensajes, asi que he sustituido el "h t t p : / / w w w." por 3w.

Última edición por Schamann; 06/10/2006 a las 02:24 Razón: Ocultar direcciones privadas
  #8 (permalink)  
Antiguo 04/10/2006, 06:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
Puedes comprobar con un cliente ftp a conectar y veras como lo haces sin problemas, o bien hazlo desde 3w.web2ftp.com/index.html y conectaras sin incidentes
OK, ... será eso.

Cita:
Si es cierto que uso un puerto distinto del standar, esto es debido a que en tiempos usando el puerto 21 tenia un monton de intentos de conexion de "dudosa" procedencia, por eso tengo abierto en el router el puerto 69 y redirigido a mi pc al puerto 21, el scaner de puertos es transparente porque tengo varios filtros instalados en el router que lo dejan "invisible"
Si haces ese tipo de configuración "invisible" realmente no sé como se comportarán las funciones de PHP al respecto o en que puede influir esto.

Intenta ver por otros médios como se realiza la conexión a nivel de "sockets" tanto cuando lo haces por médio de PHP como cuando lo haces por otros clientes FTP, a ver si ves por ahí algún tipo de mensaje de error que identifique el "rechazo" en la conexión concreto que tienes y de ahí ver en que parte del código PHP podría estar el fallo. (Sin un mensaje de error algo más "técnico" es complicado evaluar problemas de este tipo).


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 04/10/2006, 14:17
 
Fecha de Ingreso: julio-2002
Mensajes: 18
Antigüedad: 21 años, 9 meses
Puntos: 0
Cita:
Iniciado por Cluster Ver Mensaje
OK, ... será eso.



Si haces ese tipo de configuración "invisible" realmente no sé como se comportarán las funciones de PHP al respecto o en que puede influir esto.

Intenta ver por otros médios como se realiza la conexión a nivel de "sockets" tanto cuando lo haces por médio de PHP como cuando lo haces por otros clientes FTP, a ver si ves por ahí algún tipo de mensaje de error que identifique el "rechazo" en la conexión concreto que tienes y de ahí ver en que parte del código PHP podría estar el fallo. (Sin un mensaje de error algo más "técnico" es complicado evaluar problemas de este tipo).


Un saludo,
Hola de nuevo Cluster.

En el tema de los "sockets" que me comentas, ya me pierdo, soy bastante novato con PhP y me falta mucho por aprender.
Lo que tengo claro es que no es problema de la configuracion que tengo en el FTP de casa, sino que tiene que ser algo del propio servidor donde corre el php, ya que he probado con varios ftp's distintos y no puedo conectar con ninguno de ellos a traves de php, y en todos ellos conecto perfectamente a traves de 3w.web2ftp.com/index.html
Al unico que me permite conectar es al que apunta al propio servidor donde corre el php.

Lo unico que se me ocurre, es que le des una ojeada a la configuracion de php para ver si hay alguna cosa "capada" en 3w.xxxxxxxxxx.net/phpinfo.php

Gracias de nuevo por tu ayuda

Un saludo

Última edición por Schamann; 06/10/2006 a las 02:26 Razón: Ocultar direcciones privadas
  #10 (permalink)  
Antiguo 04/10/2006, 14:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
En el tema de los "sockets" que me comentas, ya me pierdo, soy bastante novato con PhP y me falta mucho por aprender.

Los "sockets" (conexiones) no es un tema exclusivo de PHP sino en general de "comunicaciones" .. Si tu tienes un "servidor" dando cierta información (como tu servidor FTP por dicho protocolo) .. también tienes uno o varios clientes que se pueden conectar a ese servidor hablando el mismo idioma (el protocolo .. en tu caso el FPT). En esta comunicación simpre hay "validaciones" y restricciones que se aplican.

Tu phpinfo() se vé bien .. pero ya te comento que en una "comunicación" puede haber muchos problemas anexos al que "habla" o al que "recibe"

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 05/10/2006, 14:49
 
Fecha de Ingreso: julio-2002
Mensajes: 18
Antigüedad: 21 años, 9 meses
Puntos: 0
Pues Cluster, de verdad, no lo entiendo...

Si desde cualquier otro cliente de FTP puedo conectar a mi server...¿porque no puedo hacerlo desde mi hosting con un simple codigo php??

Si tambien conecto a mi servidor desde web2ftp, que esta basado en codigo... ¿porque no puedo con ese script?

Y si con ese mismo script SI que puedo conectar al propio ftp server del hosting... eso creo que significa que el php esta bien.

Por lo que la unica opcion que veo, desde mi poca sabiduria es que en el hosting pueda haber alguna instruccion que no permita una conexion ftp fuera del propio dominio del servidor, por seguridad, por desconfianza, por lo que sea, pero desde luego te puedo decir que el servidor que tengo montado en casa funciona perfectamente, la cantidad de personas que se conectan a el asiduamente lo pueden avalar, y ya lleva años funcionando...

No se, a mi se me escapa de las manos, pero creo que algo debe haber y si podemos profundizar en el tema quizas aprendamos todos un poquito.

Me he puesto en contacto tambien con mi hosting, limitadamente ya que mi ingles no es precisamente muy bueno, pero mas o menos me he hecho entender, aunque por lo poco que he visto, en godaddy el servicio de atencion al cliente brilla... por su ausencia, se han limitado a decirme que no dan soporte para PHP.

Me gustaria que alguno de vosotros hiciese sencillamente la comprobacion de si puede entrar en mi server con este sencillo script, para descartar totalmente que el problema sea de mi servidor.

Código:
<?php
$stream = ftp_connect("xxxxxxxx.serveftp.com",xx);
$login = ftp_login($stream, "xxxxx", "xxxxx");

if ($login == "1") {
    echo "Estas dentro";
} else {
    echo "No estas dentro";
}

?>
Un saludo

Última edición por Schamann; 06/10/2006 a las 02:19 Razón: Ocultar direcciones privadas
  #12 (permalink)  
Antiguo 05/10/2006, 15:47
 
Fecha de Ingreso: julio-2002
Mensajes: 18
Antigüedad: 21 años, 9 meses
Puntos: 0
Bueno, el servicio de asistencia acaba de enviarme "algo" que la verdad, no se lo que es, he estado mirando el manual de php y no me aclaro mucho, pero igual es la respuesta a todo este post.

Copio aqui el texto del mensaje:

Please let us know if you are trying to make a remote connection from our server to another, if this is the case, you would need to use our proxy server.

curl_setopt ($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
curl_setopt ($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt ($ch, CURLOPT_PROXY, 'h t t p ://xx.xxx.xxx.xxx:xxxx');
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);


Un saludo
  #13 (permalink)  
Antiguo 05/10/2006, 16:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
you would need to use our proxy server.
No había caido en ese detalle directamente, pero se está poniendo de moda que para conexiones por sockets usen un proxy por médio la mayoría de proveedores.

El ejemplo que te dan usa cURL (www.php.net/curl) .. por mi parte no lo domino.

Podrías probar a buscar alguna classe para usar FTP que soporte "proxy". (veamos que dice google .. ...... ........ ............):

Dice que en www.phpclasses.org lo más probable es que encuentres alguna que lo implemente.

Lo que necesitas son los datos de conexión de tu proxy (parece que una IP sólo .. no usa autentificación a su vez que podría usarla).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 06/10/2006, 02:18
 
Fecha de Ingreso: julio-2002
Mensajes: 18
Antigüedad: 21 años, 9 meses
Puntos: 0
Me doy por vencido

Llevo muchas horas intentando averiguar algo sobre lo que me has comentado, y no hay forma, asi que desistire de la idea.

Muchas gracias de todos modos por tu ayuda

Un saludo
  #15 (permalink)  
Antiguo 07/10/2006, 01:59
 
Fecha de Ingreso: enero-2006
Ubicación: Valencia
Mensajes: 96
Antigüedad: 18 años, 3 meses
Puntos: 1
Hola,
estoy utilizando el codigo ejemplo de Schamann. A mi me conecta y puedo ver los archivos del ftp remoto.

Mi problema es que por ej el archivo test.txt no me lo consigue subir al servidor.

Yo tengo una apicación hecha con php y mysql en mi pc local, pero tiene asignada una pagina web. Entonces si quiero agregar un producto a la web desde el local, quiero hacer un script que añada los datos del producto en la tabla correspondiente del servidor y mediante ftp dentro del php suba las imágenes correspondientes. Y eso es lo que me falta que suba las imágenes a un directorio del servidor.

Saludos y gracias
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 22:09.