Класс php для работы с FTP

Янв
27

Начну с описания возможностей:

  1. Подключение к FTP серверу
  2. Авторизация
  3. Пассивный / активный режим
  4. Копирование файлов на сервер
  5. Копирование папок с рекурсией на сервер
  6. Копирование файла с сервера
  7. Удаление файла
  8. Удаление папки рекурсивно
  9. Задание прав на файл, папку
  10. Создание папок на сервере
  11. Выполнение FTP команд
  12. Тестирование соединения
  13. Ведение ошибок.

Первые и третий пункты выполняются при инициализации класса.
Пункт авторизации выполняется при выполнении одной из функций класса.

Код довольно хорошо документировать, поэтому описывать каждую функцию нет смысла. приведу лишь пример использования:

<?php
include_once("JB/FTP.php");

$ftp = new JB_FTP(array(
  
"host" => "site.com",
  
"username" => "svip",
  
"password" => "123456789",
  
"startDir" => "test"
  
));


// Копируем файл на сервер в папку test. 
$ftp->copyFile("c:/1.txt");

//создаем папку files на сервере в папке test
$ftp->mkDir("files")

// загружаем рекурсивно папку на сервер
$ftp->copyFolder("c:/mydir");

// получаем массив с ошибками
$err getErrors();

if (!empty(
$err)) {
  print 
"<pre>";
  print 
var_export($err,true);
  print 
"</pre>";
} else print 
"Ok";
?>

Реализация вывода ошибок выполнена двумя способами

<?php
// получаем массив с ошибками
$err getErrors();
?>

это код сработает если в опция класса при инициализации передадим параметр

<?php"raiseErrors" => "false"?>

иначе за вывод ошибок отвечает:

<?php
throw new JB_FTP_Exception($mes);
?>

JB_FTP_Exception - это класс имеющий код:

<?php
class JB_FTP_Exception extends Exception {
  
}
?>

можно обойтись и без него, заменив в файл класса две строки:

<?php
require_once 'JB/FTP/Exception.php';
throw new 
JB_FTP_Exception($mes);
?>

на

<?php
throw new Exception($mes);
?>

Вот собственно и сам файл класса: FTP.php

P.S. скачанный файл нужно переименовать в FTP.php