Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/07/2006, 04:35
Avatar de djreficul
djreficul
 
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 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.