Skip to content

kaptenpeter/php-ftp-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nicolab/php-ftp-client

A flexible FTP and SSL-FTP client for PHP. This lib provides helpers easy to use to manage the remote files.

Install

  • Use composer: composer install nicolab/php-ftp-client

  • Or use GIT clone command: git clone [email protected]:Nicolab/php-ftp-client.git

  • Or download the library, configure your autoloader or include the 3 files of nicolab/php-ftp-client/src/FtpClient directory.

Getting Started

Connect to a server FTP :

	$ftp = new \FtpClient\FtpClient();
	$ftp->connect($host);
	$ftp->login($login, $password);

OR

Connect to a server FTP via SSL (on port 22 or other port) :

	$ftp = new \FtpClient\FtpClient();
	$ftp->connect($host, true, 22);
	$ftp->login($login, $password);

Usage

Upload all files and all directories is easy :

	// upload with the ASCII mode
	$ftp->putAll($source_directory, $target_directory);

	// Is equal to
	$ftp->putAll($source_directory, $target_directory, FTP_ASCII);

	// or upload with the binary mode
	$ftp->putAll($source_directory, $target_directory, FTP_BINARY);

Note : FTP_ASCII and FTP_BINARY is the predefined PHP internal constant.

Get the a directory size :

	// size of the current directory
	$size = $ftp->dirSize();

	// size of a given directory
	$size = $ftp->dirSize('/path/of/directory');

Count the items in a directory :

	// count in the current directory
	$total = $ftp->count();

	// count in a given directory
	$total = $ftp->count('/path/of/directory');

	// count only the "files" in the current directory
	$total_file = $ftp->count('.', 'file');

	// count only the "files" in a given directory
	$total_file = $ftp->count('/path/of/directory', 'file');

	// count only the "directories" in a given directory
	$total_dir = $ftp->count('/path/of/directory', 'directory');

	// count only the "symbolic links" in a given directory
	$total_link = $ftp->count('/path/of/directory', 'link');

List detailed of all files and directories :

	// scan the current directory and returns the details of each item
	$items = $ftp->scanDir();

	// scan the current directory (recursive) and returns the details of each item
	var_dump($ftp->scanDir('.', true));

Result:

'directory#www' =>
    array (size=10)
      'permissions' => string 'drwx---r-x' (length=10)
      'number'      => string '3' (length=1)
      'owner'       => string '32385' (length=5)
      'group'       => string 'users' (length=5)
      'size'        => string '5' (length=1)
      'month'       => string 'Nov' (length=3)
      'day'         => string '24' (length=2)
      'time'        => string '17:25' (length=5)
      'name'        => string 'www' (length=3)
      'type'        => string 'directory' (length=9)

  'link#www/index.html' =>
    array (size=11)
      'permissions' => string 'lrwxrwxrwx' (length=10)
      'number'      => string '1' (length=1)
      'owner'       => string '0' (length=1)
      'group'       => string 'users' (length=5)
      'size'        => string '38' (length=2)
      'month'       => string 'Nov' (length=3)
      'day'         => string '16' (length=2)
      'time'        => string '14:57' (length=5)
      'name'        => string 'index.html' (length=10)
      'type'        => string 'link' (length=4)
      'target'      => string '/var/www/shared/index.html' (length=26)

'file#www/README' =>
    array (size=10)
      'permissions' => string '-rw----r--' (length=10)
      'number'      => string '1' (length=1)
      'owner'       => string '32385' (length=5)
      'group'       => string 'users' (length=5)
      'size'        => string '0' (length=1)
      'month'       => string 'Nov' (length=3)
      'day'         => string '24' (length=2)
      'time'        => string '17:25' (length=5)
      'name'        => string 'README' (length=6)
      'type'        => string 'file' (length=4)

All FTP PHP functions are supported and some improved :

	// Requests execution of a command on the FTP server
	$ftp->exec($command);

	// Turns passive mode on or off
	$ftp->pasv(true);

	// Set permissions on a file via FTP
	$ftp->chmod('0777', 'file.php');

	// Removes a directory
	$ftp->rmdir('path/of/directory/to/remove');

	// Removes a directory (recursive)
	$ftp->rmdir('path/of/directory/to/remove', true);

	// Creates a directory
	$ftp->mkdir('path/of/directory/to/create');

	// Creates a directory (recursive),
	// creates automaticaly the sub directory if not exist
	$ftp->mkdir('path/of/directory/to/create', true);

	// and more ...

Get the help information of the remote FTP server :

	var_dump($ftp->help());

Result :

array (size=6)
  0 => string '214-The following SITE commands are recognized' (length=46)
  1 => string ' ALIAS' (length=6)
  2 => string ' CHMOD' (length=6)
  3 => string ' IDLE' (length=5)
  4 => string ' UTIME' (length=6)
  5 => string '214 Pure-FTPd - http://pureftpd.org/' (length=36)

Note : The result depend of the FTP server.

Testing

Tested with "atoum" unit testing framework.

License

MIT

Author

Nicolas Tallefourtane - Nicolab.net
Nicolas Talle
Make a donation via Paypal

About

A flexible FTP and SSL-FTP client for PHP

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%