+ +
+

FTP Class

+

CodeIgniter’s FTP Class permits files to be transferred to a remote +server. Remote files can also be moved, renamed, and deleted. The FTP +class also includes a “mirroring” function that permits an entire local +directory to be recreated remotely via FTP.

+
+

Note

+

SFTP and SSL FTP protocols are not supported, only standard +FTP.

+
+ +
+

Working with the FTP Class

+
+

Initializing the Class

+

Like most other classes in CodeIgniter, the FTP class is initialized in +your controller using the $this->load->library function:

+
$this->load->library('ftp');
+
+
+

Once loaded, the FTP object will be available using: $this->ftp

+
+
+

Usage Examples

+

In this example a connection is opened to the FTP server, and a local +file is read and uploaded in ASCII mode. The file permissions are set to +755.

+
$this->load->library('ftp');
+
+$config['hostname'] = 'ftp.example.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();
+
+
+

In this example a list of files is retrieved from the server.

+
$this->load->library('ftp');
+
+$config['hostname'] = 'ftp.example.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();
+
+
+

In this example a local directory is mirrored on the server.

+
$this->load->library('ftp');
+
+$config['hostname'] = 'ftp.example.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();
+
+
+
+
+
+

Class Reference

+
+
+class CI_FTP
+
+
+connect([$config = array()])
+
+++ + + + + + + + +
Parameters:
    +
  • $config (array) – Connection values
  • +
+
Returns:

TRUE on success, FALSE on failure

+
Return type:

bool

+
+

Connects and logs into to the FTP server. Connection preferences are set +by passing an array to the function, or you can store them in a config +file.

+

Here is an example showing how you set preferences manually:

+
$this->load->library('ftp');
+
+$config['hostname'] = 'ftp.example.com';
+$config['username'] = 'your-username';
+$config['password'] = 'your-password';
+$config['port']     = 21;
+$config['passive']  = FALSE;
+$config['debug']    = TRUE;
+
+$this->ftp->connect($config);
+
+
+

Setting FTP Preferences in a Config File

+

If you prefer you can store your FTP preferences in a config file. +Simply create a new file called the ftp.php, add the $config array in +that file. Then save the file at application/config/ftp.php and it +will be used automatically.

+

Available connection options

+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Option nameDefault valueDescription
hostnamen/aFTP hostname (usually something like: ftp.example.com)
usernamen/aFTP username
passwordn/aFTP password
port21FTP server port number
debugFALSETRUE/FALSE (boolean): Whether to enable debugging to display error messages
passiveTRUETRUE/FALSE (boolean): Whether to use passive mode
+
+ +
+
+upload($locpath, $rempath[, $mode = 'auto'[, $permissions = NULL]])
+
+++ + + + + + + + +
Parameters:
    +
  • $locpath (string) – Local file path
  • +
  • $rempath (string) – Remote file path
  • +
  • $mode (string) – FTP mode, defaults to ‘auto’ (options are: ‘auto’, ‘binary’, ‘ascii’)
  • +
  • $permissions (int) – File permissions (octal)
  • +
+
Returns:

TRUE on success, FALSE on failure

+
Return type:

bool

+
+

Uploads a file to your server. You must supply the local path and the +remote path, and you can optionally set the mode and permissions. +Example:

+
$this->ftp->upload('/local/path/to/myfile.html', '/public_html/myfile.html', 'ascii', 0775);
+
+
+

If ‘auto’ mode is used it will base the mode on the file extension of the source file.

+

If set, permissions have to be passed as an octal value.

+
+ +
+
+download($rempath, $locpath[, $mode = 'auto'])
+
+++ + + + + + + + +
Parameters:
    +
  • $rempath (string) – Remote file path
  • +
  • $locpath (string) – Local file path
  • +
  • $mode (string) – FTP mode, defaults to ‘auto’ (options are: ‘auto’, ‘binary’, ‘ascii’)
  • +
+
Returns:

TRUE on success, FALSE on failure

+
Return type:

bool

+
+

Downloads a file from your server. You must supply the remote path and +the local path, and you can optionally set the mode. Example:

+
$this->ftp->download('/public_html/myfile.html', '/local/path/to/myfile.html', 'ascii');
+
+
+

If ‘auto’ mode is used it will base the mode on the file extension of the source file.

+

Returns FALSE if the download does not execute successfully +(including if PHP does not have permission to write the local file).

+
+ +
+
+rename($old_file, $new_file[, $move = FALSE])
+
+++ + + + + + + + +
Parameters:
    +
  • $old_file (string) – Old file name
  • +
  • $new_file (string) – New file name
  • +
  • $move (bool) – Whether a move is being performed
  • +
+
Returns:

TRUE on success, FALSE on failure

+
Return type:

bool

+
+

Permits you to rename a file. Supply the source file name/path and the new file name/path.

+
// Renames green.html to blue.html
+$this->ftp->rename('/public_html/foo/green.html', '/public_html/foo/blue.html');
+
+
+
+ +
+
+move($old_file, $new_file)
+
+++ + + + + + + + +
Parameters:
    +
  • $old_file (string) – Old file name
  • +
  • $new_file (string) – New file name
  • +
+
Returns:

TRUE on success, FALSE on failure

+
Return type:

bool

+
+

Lets you move a file. Supply the source and destination paths:

+
// Moves blog.html from "joe" to "fred"
+$this->ftp->move('/public_html/joe/blog.html', '/public_html/fred/blog.html');
+
+
+
+

Note

+

If the destination file name is different the file will be renamed.

+
+
+ +
+
+delete_file($filepath)
+
+++ + + + + + + + +
Parameters:
    +
  • $filepath (string) – Path to file to delete
  • +
+
Returns:

TRUE on success, FALSE on failure

+
Return type:

bool

+
+

Lets you delete a file. Supply the source path with the file name.

+
$this->ftp->delete_file('/public_html/joe/blog.html');
+
+
+
+ +
+
+delete_dir($filepath)
+
+++ + + + + + + + +
Parameters:
    +
  • $filepath (string) – Path to directory to delete
  • +
+
Returns:

TRUE on success, FALSE on failure

+
Return type:

bool

+
+

Lets you delete a directory and everything it contains. Supply the +source path to the directory with a trailing slash.

+
+

Important

+

Be VERY careful with this method! +It will recursively delete everything within the supplied path, +including sub-folders and all files. Make absolutely sure your path +is correct. Try using list_files() first to verify that your path is correct.

+
+
$this->ftp->delete_dir('/public_html/path/to/folder/');
+
+
+
+ +
+
+list_files([$path = '.'])
+
+++ + + + + + + + +
Parameters:
    +
  • $path (string) – Directory path
  • +
+
Returns:

An array list of files or FALSE on failure

+
Return type:

array

+
+

Permits you to retrieve a list of files on your server returned as an +array. You must supply the path to the desired directory.

+
$list = $this->ftp->list_files('/public_html/');
+print_r($list);
+
+
+
+ +
+
+mirror($locpath, $rempath)
+
+++ + + + + + + + +
Parameters:
    +
  • $locpath (string) – Local path
  • +
  • $rempath (string) – Remote path
  • +
+
Returns:

TRUE on success, FALSE on failure

+
Return type:

bool

+
+

Recursively reads a local folder and everything it contains (including +sub-folders) and creates a mirror via FTP based on it. Whatever the +directory structure of the original file path will be recreated on the +server. You must supply a source path and a destination path:

+
$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');
+
+
+
+ +
+
+mkdir($path[, $permissions = NULL])
+
+++ + + + + + + + +
Parameters:
    +
  • $path (string) – Path to directory to create
  • +
  • $permissions (int) – Permissions (octal)
  • +
+
Returns:

TRUE on success, FALSE on failure

+
Return type:

bool

+
+

Lets you create a directory on your server. Supply the path ending in +the folder name you wish to create, with a trailing slash.

+

Permissions can be set by passing an octal value in the second parameter.

+
// Creates a folder named "bar"
+$this->ftp->mkdir('/public_html/foo/bar/', 0755);
+
+
+
+ +
+
+chmod($path, $perm)
+
+++ + + + + + + + +
Parameters:
    +
  • $path (string) – Path to alter permissions for
  • +
  • $perm (int) – Permissions (octal)
  • +
+
Returns:

TRUE on success, FALSE on failure

+
Return type:

bool

+
+

Permits you to set file permissions. Supply the path to the file or +directory you wish to alter permissions on:

+
// Chmod "bar" to 755
+$this->ftp->chmod('/public_html/foo/bar/', 0755);
+
+
+
+ +
+
+changedir($path[, $suppress_debug = FALSE])
+
+++ + + + + + + + +
Parameters:
    +
  • $path (string) – Directory path
  • +
  • $suppress_debug (bool) – Whether to turn off debug messages for this command
  • +
+
Returns:

TRUE on success, FALSE on failure

+
Return type:

bool

+
+

Changes the current working directory to the specified path.

+

The $suppress_debug parameter is useful in case you want to use this method +as an is_dir() alternative for FTP.

+
+ +
+
+close()
+
+++ + + + + + +
Returns:TRUE on success, FALSE on failure
Return type:bool
+

Closes the connection to your server. It’s recommended that you use this +when you are finished uploading.

+
+ +
+ +
+
+ + +