yii2mod / yii2-ftp
A flexible FTP and SSL-FTP client for PHP. This lib provides helpers easy to use to manage the remote files.
Installs: 352 026
Dependents: 5
Suggesters: 0
Security: 0
Stars: 33
Watchers: 4
Forks: 8
Open Issues: 5
Requires
- php: >=5.4
- ext-ftp: *
Requires (Dev)
This package is auto-updated.
Last update: 2024-10-29 04:19:57 UTC
README
FTP Client for Yii 2
yii2-ftp is a fork of Nicolab/php-ftp-client v1.2.0
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist yii2mod/yii2-ftp "*"
or add
"yii2mod/yii2-ftp": "*"
to the require section of your composer.json.
Getting Started
Connect to a server FTP :
$ftp = new \yii2mod\ftp\FtpClient(); $host = 'ftp.example.com'; $ftp->connect($host); $ftp->login($login, $password);
OR
Connect to a server FTP via SSL (on port 22 or other port) :
$ftp = new \yii2mod\ftp\FtpClient(); $host = 'ftp.example.com'; $ftp->connect($host, true, 22); $ftp->login($login, $password);
Note: The connection is implicitly closed at the end of script execution (when the object is destroyed). Therefore it is unnecessary to call $ftp->close()
, except for an explicit re-connection.
Usage
Upload all files and all directories is easy :
// upload with the BINARY mode $ftp->putAll($source_directory, $target_directory); // Is equal to $ftp->putAll($source_directory, $target_directory, FTP_BINARY); // or upload with the ASCII mode $ftp->putAll($source_directory, $target_directory, FTP_ASCII);
Note : FTP_ASCII and FTP_BINARY are predefined PHP internal constants.
Get 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');
Detailed list 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 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 FTP server.
Support us
Does your business depend on our contributions? Reach out and support us on Patreon. All pledges will be dedicated to allocating workforce on maintenance and new awesome stuff.