Continuando con algunas memorias sobre la programación en PHP les comparto este pequeño tutorial que nos enseña a crear una conexión FTP por medio de PHP.
Script muy útil cuando necesitamos iniciar sesión en un servidor remoto. Pero vayamos por partes.
¿Qué es una conexión FTP?
FTP corresponde a las siglas de File Transfer Protocol o Protocolo de Transferencia de Archivos. Cómo su propio nombre lo indica, es un protocolo que pertenece a TCP/IP que se encarga de la transferencia de archivos entre computadoras conectadas en red.
Al basarse en la arquitectura Cliente / Servidor, el FTP hace uso de dos componentes básicos:
- Un cliente. El cual se encarga de conectarse a un servidor FTP para descargar o subir archivos.
- Un servidor. Se encarga de procesar las peticiones de los clientes FTP, permitiéndoles descargar o subir archivos desde él.
Para conectarnos a un servidor FTP necesitaremos los siguientes datos:
- Nombre del Servidor. Es la IP o Nombre del Servidor FTP al cual nos conectaremos
- Puerto. Número del puerto del servidor. Por defecto es 21.
- Usuario. Es el nombre de la cuenta de usario que se nos ha asignado.
- Clave de acceso. Es nuestra contraseña de cuenta de usuario.
¿Cómo conectarte por PHP a un servidor FTP?
Si quiere el detalle de todas las funciones disponibles para PHP te aconsejo consultar la documentación oficial del PHP, disponible en: http://www.php.net/docs.php.
$conexion_id = ftp_connect($ip_servidor); // creamos un ID de conexión al servidor
$resultado = ftp_login($conexion_id,’usuario’,’password’); // iniciamos sesion con usuario y contraseña
if((!$conexion_id) || (!$resultado)){
die(«Falló la conexión»);
}
else
{
//Si se inició sesion, cambiamos a modo pasivo (Las conexiones de datos son iniciadas por el cliente, en lugar de por el servidor. Puede ser necesaria si el cliente está detrás de un firewall)
ftp_pasv($conexion_id, true);
$remoto = $path . «archivo.txt»; // Indicamos la ruta y el nombre del archivo a transmitir
$local = «archivo.txt»; // Este es el nombre del archivo que vamos a mandar al servidor
$archivo_enviado = ftp_put( $conexion_id, $local, $remoto, FTP_BINARY ); //subimos el archivo al servidor en modo binarioif ( $archivo_enviado ) {
echo «archivo subido»;
}
else {
echo «No se pudo enviar el archivo «;
}
}
//Y por ultimo cerramos la conexión FTP
ftp_close($conexion_id);