15 de abril de 2009

PHP: FTP

Mucha gente ha oído hablar del servicio Curl de PHP sobre Apache, pero lo que muchos no saben es que desde PHP también tenemos disponible un servicio PHP (siempre y cuando el administrador del sistema no lo haya desactivado).

En caso de tenerlo activado su uso es bastante sencillo y muy útil, ya que podemos olvidarnos de las limitaciones de subida de ficheros por parte de los formularios. Eso sí, dependiendo del servidor nos podemos encontrar con un problema de timeout.

Bueno, os pongo aquí un pequeño ejemplo:

<?
$ftp_server = "nombre del servidor de FTP";

$ftp_user_name = "nombre del usuario";
$ftp_user_pass = "clave del usuario";
$destination_file = "nombre del fichero subido";
$source_file = "nombre del fichero origen";


// crear objeto de conextión
$conn_id = ftp_connect($ftp_server);

// identificación con usuario y clave
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// Comprobar conexión
if ((!$conn_id) || (!$login_result)) {
echo "¡La conexión FTP ha fallado!";
echo "Intento de conexión al servidor $ftp_server para el usuario $ftp_user_name";
exit;
} else {
echo "Conectado con $ftp_server, con el usuario $ftp_user_name";
}

// subir fichero
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);

// comprobar resultado de la subida
if (!$upload) {
echo "La subida de ficheros por FTP ha fallado";
} else {
echo "El fichero $source_file ha sido subido al servidor $ftp_server con el nombre $destination_file";
}

// cerrar la conexión FTP
ftp_close($conn_id);
?>