jul 06 02

Conexiones FTP activas y pasivas con PHP

Tiempo estimado de lectura: 1,27 minutos

conexion activa El lenguaje PHP ofrece un completo set de funciones para utilizar el protocolo FTP usado para la transferencia de archivos. Este set de funciones permite hacer casi cualquier cosa que un cliente de FTP haría cosa que resulta extremadamente útil cuando necesitamos que un script realize alguna de estas funciones.

El uso de estas funciones es muy sencillo y no requiere de conocimientos específicos del protocolo salvo algunas cosas básicas que trataré de explicarlas a continuación.

El primer instancia podemos dividir las conexiones FTP en dos tipos: conexiones activas y conexiones pasivas.

En las conexiones activas se utilizan dos puertos de comunicación específicos en el server: el famoso puerto 21 para la comunicación y el acknowledge y el puerto 20 para la transferencia de datos. En este caso es el server que intenta la segunda conexión a un puerto random alto del cliente

En las conexiones pasivas, por su parte, el server no especifica un puerto de transferencia de datos, sino que es el cliente que intenta también esta conexión para la transferencia de datos.
conexion pasiva

Pero volviendo a PHP, ¿para qué sirve esto?

Es una buena pregunta. Es muy común, al utilizar alguno de los ejemplos que se muestran a modo didáctico en los sitios de PHP que por defecto intentan conexiones activas, que tire un aviso tipo warning y que el archivo sea creado en el servidor pero que esté vacío, con 0Kb. Esto sucede porque el servidor intenta iniciar la segunda comunicación para la transferencia de datos con el cliente y el firewall de este último le rechace la comunicación. Por lo que trae como resultado la creación del archivo sin transferencia alguna.

Para solucionar esto hay dos soluciones: La primera es seguir usando la conexión activa y permitir la conexión a través del puerto 20 en el cliente y la segunda es usar conexiones FTP pasivas. Cada usa tiene su pro y su contra y estará en ustedes usar una o usar otra.

Para usar conexiones pasivas con PHP basta sólo con setear la pasividad con la función ftp_pasv($id_conexion,true).

Copame! Digg it Digg it Reddit Del.icio.us

    5 Comentarios

  1. Matías


    PHP definitivamente es muy simple. El último trabajo que presenté para “Redes” era sobre firewalling y el tema del FTP es un embole. Actualmente existen firewalls que tienen que leer todos los paquetes y “entender” FTP para poder saber de dónde va a venir la conexión.

    Larga vida a PHP.

  2. Miguel


    Ladrón… deja de robar información del trabajo!!!…

  3. Lucas


    Vamos Miguel… si nadie tenía idea de esto :P Puedo haberla robado de cualquier otro lado… menos de ahí ;)

  4. Miguel


    mmmm… tenes razon…entonces gracias por enseñarlo…:)

  5. Gabriel


    Buen aporte compañero.. me ha servido de arto esta informacion.

    mil gracias

Deja un Comentario

Tags permitidos:

  • <a href="" title="">
  • <abbr title="">
  • <acronym title="">
  • <blockquote cite="">
  • <code>
  • <em>
  • <strong>