Clase FTP
La Clase FTP de CodeIgniter permite que los archivos sean transferidos a un servidor remoto. Los archivos remotos pueden también ser movidos, renombrados, y borrados. La Clase FTP también incluye una función de "espejado" que permite que permite a todo un directorio local ser recreado en forma remota a través de FTP.
Nota: Los protocolos FTP SFTP y SSL no están soportados, solo FTP estándar.
Inicializando la Clase
Al igual que la mayoría de las otras clases en CodeIgniter, la clase FTP se inicializa en sus controlador usando la función $this->load->library:
$this->load->library('ftp');
Una vez cargado, el objeto FTP estará disponible utilizando: $this->ftp
Ejemplos de Uso
En este ejemplo, una conexión se abre con el servidor FTP, y un archivo local es leído y cargado en modo ASCII.Los permisos de archivo se establecen a 755. Nota: La configuración de permisos requiere PHP 5.
$this->load->library('ftp');
$config['hostname'] = 'ftp.your-site.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug'] = TRUE;
$this->ftp->connect($config);
$this->ftp->upload('/local/path/to/myfile.html', '/public_html/myfile.html', 'ascii', 0775);
$this->ftp->close();
En este ejemplo se recupera una lista de archivos desde el servidor.
$this->load->library('ftp');
$config['hostname'] = 'ftp.your-site.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug'] = TRUE;
$this->ftp->connect($config);
$list = $this->ftp->list_files('/public_html/');
print_r($list);
$this->ftp->close();
En este ejemplo, se refleja un directorio local en el servidor.
$this->load->library('ftp');
$config['hostname'] = 'ftp.your-site.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug'] = TRUE;
$this->ftp->connect($config);
$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');
$this->ftp->close();
Referencia de Función
$this->ftp->connect()
Se conecta y registra en el servidor FTP. Las preferencias de conexión se establecen pasando un arreglo a la función, o almacenándolas en un archivo de configuración.
Aquí hay un ejemplo que muestra cómo establecer las preferencias manualmente:
$this->load->library('ftp');
$config['hostname'] = 'ftp.your-site.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['port'] = 21;
$config['passive'] = FALSE;
$config['debug'] = TRUE;
$this->ftp->connect($config);
Establacer las Preferencias de FTP en un Archivo de Configuracion
Si Ud. prefiere, puede almacenar sus preferencias de FTP en un archivo de configuración. Simplemente crea un nuevo archivo llamado ftp.php, agrega el arreglo $config en ese archivo. A continuación guarde el archivo en config/ftp.php y se usará automáticamente.
Opciones de Conexión Disponibles:
- hostname - el nombre del host FTP. Por lo general, algo como: ftp.example.com
- username - el nombre de usuario FTP.
- password - la contraseña FTP.
- port - el número de puerto. Establecido a 21 por defecto.
- debug - TRUE/FALSE (boolean). Ya sea para permitir o no la depuración para mostrar mensajes de error.
- passive - TRUE/FALSE (boolean). Ya sea para usar o no el modo pasivo. Pasivo se establece automáticamente por defecto.
$this->ftp->upload()
Carga un archivo a su servidor. Usted debe proporcionar la ruta local y la ruta remota, opcionalmente se puede establecer el modo y los permisos. Ejemplo:
$this->ftp->upload('/local/path/to/myfile.html', '/public_html/myfile.html', 'ascii', 0775);
Las opciones de Modo son: ascii, binary, and auto (el valor por defecto). Si auto es usado, será el modo base en la extensión de archivos del archivo fuente.
Los permisos están disponibles si está corriendo PHP 5 y se pueden pasar como un valor octal en el cuarto parámetro.
$this->ftp->rename()
Permite renombrar un archivo. Suministre el nombre/ruta del archivo fuente y el nombre/ruta del nuevo archivo.
// Renombra green.html a blue.html
$this->ftp->rename('/public_html/foo/green.html', '/public_html/foo/blue.html');
$this->ftp->move()
Le permite mover un archivo. Suministre la ruta fuente y la de destino:
// Mueve blog.html desde "joe" a "fred"
$this->ftp->move('/public_html/joe/blog.html', '/public_html/fred/blog.html');
Nota: si el nombre del archivo destino es diferente el archivo será renombrado.
$this->ftp->delete_file()
Le permite borrar un archivo. Suministre la ruta fuente con el nombre del archivo.
$this->ftp->delete_file('/public_html/joe/blog.html');
$this->ftp->delete_dir()
Le permite borrar un directorio y todo lo que contiene. Suministre la ruta fuente al directorio con una barra diagonal.
Importante Tenga MUCHO CUIDADO con esta función. Ésta borrará recursivamente todo en la ruta suministrada, incluidas las sub-carpetas y todos los archivos. Hacer uso de la misma estando absolutamente seguro de que la ruta es correcta. Trate de usar la función list_files() en primer lugar para verificar que su ruta es correcta.
$this->ftp->delete_dir('/public_html/path/to/folder/');
$this->ftp->list_files()
Le permite obtener una lista de archivos de su servidor retornados como un arreglo. Usted debe proporcionar la ruta al directorio deseado.
$list = $this->ftp->list_files('/public_html/');
print_r($list);
$this->ftp->mirror()
Lee recursivamente una carpeta local y todo lo que contiene (incluidos las sub-carpetas) y crea un espejo a través de FTP basado en él. Cualquiera que sea la estructura de directorios de la ruta del archivo original será recreado en el servidor. Ud. debe suministrar una ruta fuente y una ruta destino:
$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');
$this->ftp->mkdir()
Le permite crear un directorio en su servidor. Suministre la ruta final en el nombre de la carpetaque desea crear, con una barra diagonal. Los permisos pueden ser establecidos pasando un valor octal en el segundo parámetro (si está ejecutando PHP 5).
// Crea una carpeta llamada "bar"
$this->ftp->mkdir('/public_html/foo/bar/', 0777);
$this->ftp->chmod()
Le permite establecer permisos de archivo. Suministre la ruta del archivo o carpeta que desea modificar los permisos en:
// Chmod "bar" a 777
$this->ftp->chmod('/public_html/foo/bar/', 0777);
$this->ftp->close();
Cierra la conexión con el servidor. Es recomendable que utilice esto cuando haya terminado de cargar.