El modo pasivo de FTP en PHP

Antes de cualquier explicación debemos saber las diferencias entre el modo activo y el modo pasivo en FTP. Podemos decir, resumiendo mucho, en modo pasivo las conexiones son siempre abiertas por el pc cliente, mientras que en modo activo se abren por el que envía los datos, el servidor si se trata de bajar archivos o información al pc local, el cliente si se trata de subir archivos al servidor.

Tendiendo lo anterior en cuenta en el modo activo se abre una conexión para datos desde el servidor a la maquina cliente, esto es, una conexión desde fuera hacia dentro; si la maquina cliente está protegida por un firewall, este filtra o bloquea la conexión entrante al serle un proceso desconocido. En modo pasivo es el cliente el que inicia ambas conexiones, de control y de datos, con lo cual el firewall no tiene ninguna conexión entrante que filtrar.

Por este motivo la razón de que algunas funciones de PHP nos funcionen en un servidor u otro con el mismo código no depende de la versión instalada o del sistema operativo, depende exclusivamente de la configuración de seguridad que tengamos en nuestra máquina.

Funciones que pueden darnos problemas son todas aquellas que implican una descarga de datos desde el servidor, datos que no tienen por qué ser archivos completos, puede ser el listado de documentos de una carpeta por ejemplo (ftp_rawlist). De ahí que muchas veces no sepamos cuál es el error porque la conexión se establece correctamente y el usuario se autentifica pero operaciones de descarga demoran muchísimo y producen resultados inesperados.

Comentarios