Foros del Web » Programando para Internet » PHP »

Subida por FTP y Router 3Com

Estas en el tema de Subida por FTP y Router 3Com en el foro de PHP en Foros del Web. Bueno, tengo un problema con la subida de archivos por FTP. El router 3Com parece que no deja paso al PHP para subir los archivos ...
  #1 (permalink)  
Antiguo 03/07/2006, 04:35
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 8 meses
Puntos: 0
Subida por FTP y Router 3Com

Bueno, tengo un problema con la subida de archivos por FTP. El router 3Com parece que no deja paso al PHP para subir los archivos y eso que tiene los puertos abiertos.

Es más, usando el SmartFTP y habilitando la opción "Force Server IP for PASV Mode" se conecta al FTP y logra subir archivos.

Sin embargo a través de PHP me da los siguientes errores:

Warning: ftp_put() [function.ftp-put]: php_connect_nonb() failed: No error (0) in C:\Inetpub\wifi\prueba.php on line 25

Warning: ftp_put() [function.ftp-put]: Entering Passive Mode (172,36,0,13,14,247). in C:\Inetpub\wifi\prueba.php on line 25
No se pudo subir el archivo en modo ASCII...

Warning: ftp_put() [function.ftp-put]: php_connect_nonb() failed: No error (0) in C:\Inetpub\wifi\prueba.php on line 30

Warning: ftp_put() [function.ftp-put]: Entering Passive Mode (172,36,0,13,15,7). in C:\Inetpub\wifi\prueba.php on line 30
No se pudo subir el archivo en modo BINARY...

Este es el código que utilizo:

Código PHP:
<?php
set_time_limit
(0);
$urlftp="xxx.xxx.xxx.xxx"//IP publica
//$urlftp=gethostbyaddr($urlftp);
$portftp="2120";
$userftp="user";
$passftp="pass";
$carpeta="carpeta";
echo 
"Intentando conectar al servidor $urlftp<br>";
if (
$ftp=ftp_connect ($urlftp,$portftp)) {
    echo 
"Conecta al FTP<br>";
    if (
$ftplog=ftp_login ($ftp,$userftp,$passftp)) {
        echo 
"Se loggea al FTP<br>";
        
//Añadido
        
if ($ftp_dir=ftp_pwd($ftp)) { 
            echo 
"La carpeta actual es $ftp_dir<br>";
        } else {
            echo 
"No se puede obtener informacion sobre la carpeta actual...<br>";
        }
        if (
$ftpdir=ftp_chdir ($ftp,$carpeta)) {
            echo 
"Existe la carpeta y se dirije a ella<br>";
            
//Subire un archivo...
            
echo "Entrando en modo pasivo...<br>";
            
ftp_pasv ($ftp,true);
            if (
ftp_put ($ftp,"arriba.gif","arriba.gif",FTP_ASCII)) {
                echo 
"Se subió el archivo en modo ASCII...<br>";
            } else {
                echo 
"No se pudo subir el archivo en modo ASCII...<br>";
            }
            if (
ftp_put ($ftp,"abajo.gif","abajo.gif",FTP_BINARY)) {
                echo 
"Se subió el archivo en modo BINARY...<br>";
            } else {
                echo 
"No se pudo subir el archivo en modo BINARY...<br>";
            }
        }
    }
    
ftp_close ($ftp);
} else {
    echo 
"No conecta al FTP.";
}
?>
Estoy seguro de que este Script funciona perfectamente porque conectando a través de otro servidor de la red interna todo funciona perfecto y sube los archivos. Sin embargo el 3Com parece denegar la subida.
Esto pasa cuando no se usa el puerto 21.

¿Alguna sugerencia para poder subir los archivos a través de PHP al igual q hace el SmartFTP?

Uso PHP 5.0.4 en modo ISAPI en el Windows 2003 Server aunque dudo q ésto tenga nada q ver con el problema del 3Com.
  #2 (permalink)  
Antiguo 03/07/2006, 12:24
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 8 meses
Puntos: 0
Nadie sabe nada del tema?
  #3 (permalink)  
Antiguo 06/07/2006, 02:12
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 8 meses
Puntos: 0
Necesito ayuda. He probado con varias clases FTP, conexión por sockets... y nada. A ver si a alguien se le ocurre algo.

P.D.: Sé que no debería responderme a mí mismo pero es la única forma de q la gente vea el tema xq sino se quedaría lejos y nadie los vería.
  #4 (permalink)  
Antiguo 06/07/2006, 08:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Según tu código de ejemplo ya te intentas conectar por FTP pasivo:
ftp_pasv ($ftp,true);

El problema "creo" que lo tienes en que tu router actua de proxy (es así?) .. en ese caso necesitarías una conexión tipo:

Cita:
sven at cartell-network dot de
13-Feb-2002 09:27
connection to a ftp server across proxy
Código PHP:
$ftp_server "proxy"f.e123.456.789.10
$ftp_user_name 
"username@ftpserver"f.eexampleuk@www.example.uk
$ftp_user_pass 
"password";

$conn_id ftp_connect($ftp_server2121);
$login_result ftp_login$conn_id$ftp_user_name$ftp_user_pass ); 
Fijate en los datos de conexión . .el usuario con la @ y el domino al que apuntas finalmente ... (eso es bien importante ..)

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 06/07/2006, 10:00
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 8 meses
Puntos: 0
¿Cómo sé si el router actúa de proxy?

Lo q yo veo curioso es q el SmartFTP me deje conectar y subir archivos y q PHP se conecte pero no me deje subir los archivos... Sea desde otro servidor de la misma red (usando la IP publica en lugar de la privada y con salida por cable modem de ONO en lugar del router de Telefonica) o desde uno de pago de internet (somos revendedores pero aún estamos haciendo pruebas con el servidor propio).

Vamos, éste es el único caso de problemas con el FTP. Pero es q resulta q he leído x ahí q el 3Com q tenemos tiene problemas en la configuración NAT y quizás x eso falle... xq tampoco puedo acceder desde IE ni Firefox, y de clientes FTP solo he probado el SmartFTP q como ya he dixo conecta y permite subir archivos.

La única clase con la q tengo esperanza de q funcione es KioobFTP y me he peleado con la configuración intentando q llegue a subir pero falla.
  #6 (permalink)  
Antiguo 06/07/2006, 10:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Y como configuras tu "SmartFtp" .. que datos usas? ..

El ejemplo que saqué de php.net (comentarios de los usuarios de esas funciones) .. ahí "justamente" usan el mismo puerto que haces tu mención para ilustrar el ejemplo de "proxy".

Cita:
Pero es q resulta q he leído x ahí q el 3Com q tenemos tiene problemas en la configuración NAT y quizás x eso falle
Igualmente creo que deberías revisar su configuración .. Yo uso NAT en la LAN donde trabajo como Proxy "transparente" .. y salgo hacia afuera directamente sin mayor problema indicando la IP del servidor FTP donde me conecto y puerto típico ... (en conexión FTP pasivo).

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 06/07/2006, 10:17
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 8 meses
Puntos: 0
Pues el SmartFTP lo dejo tal cual viene, no toco la configuración y entonces conecta pero falla al hacer el comando LIST.

Si le habilito el "Force Server IP for PASV Mode" en la configuración (ésta misma opción la he visto en la clase q comenté antes x eso creo q puede ser con la q lo consiga) pues ya no peta y me deja incluso subir archivos. Sé también que el cortafuegos no corta la conexión pues por red interna me permite y además he probado deshabilitándolo y nada.

Así q sigo pensando q el fallo se debe a algún comando o algo q no permite el 3Com pero el SmartFTP hará algo con lo q podrá conectarse y como no sé qué es no sé tampoko cómo enfocar el problema.

Sobre lo del problema del 3Com comento q es un fallo q hubo en el último firmware y q como ya estaba obsoleto el router no lo van a corregir. El técnico de red estuvo dándole vueltas y tampoko consiguió ver q hubiera problemas con el router.
  #8 (permalink)  
Antiguo 10/07/2006, 04:35
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 8 meses
Puntos: 0
Bien, me he fijado mejor haciendo más pruebas con el SmartFTP y al final no es la opción de "Force Server IP for PSV Mode" la q hace que me lea los directorios y permita subir ficheros sino la opción de "Enable UPNP (Universal Plug & Play)". Vamos, creo q ambas en conjunto hacen q todo funcione bien.

¿Alguna idea de como implementar eso en PHP? Xq yo miro en el cortafuegos las conexiones y lo q falla es la redirección de puertos.

A través de PHP se conecta un puerto correctamente pero la segunda conexión tiene como puerto de origen el 0.

A través del SmartFTP el puerto de origen es un puerto valido y x lo tanto funciona bien.
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 18:17.