FTP класс 

FTP класс CodeIgniter позволяет перенос файлов на удаленный сервер. Удаленные файлы также могут быть перемещены, переименованы и удалены. FTP класс также включает в себя “зеркальное отображение (дублирование)” функции, которая позволяет создать локальный каталог удаленно через FTP.

Примечание

SFTP и SSL FTP протоколы не поддерживаются, только стандартные FTP.

Работая с FTP классом 

Инициализация класса 

Как и большинство других классов в CodeIgniter, FTP класс инициализируется в контроллере с помощью $this->load->library функции:

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

После загрузки FTP, объект будет доступен через: $this->ftp

Примеры использования 

В этом примере открываем подключение к FTP серверу, читаем и загружаем локальный файл в ASCII режиме. Права доступа к файлам устанавливаются 755.

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

$config['hostname'] = 'ftp.example.com';
$config['username'] = 'логин';
$config['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();

В данном примере список файлов загружается с сервера.

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

$config['hostname'] = 'ftp.example.com';
$config['username'] = 'логин';
$config['password'] = 'пароль';
$config['debug']        = TRUE;

$this->ftp->connect($config);

$list = $this->ftp->list_files('/public_html/');

print_r($list);

$this->ftp->close();

В этом примере локальный каталог дублируется на сервере.

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

$config['hostname'] = 'ftp.example.com';
$config['username'] = 'логин';
$config['password'] = 'пароль';
$config['debug']        = TRUE;

$this->ftp->connect($config);

$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');

$this->ftp->close();

Настройки класса 

class CI_FTP 
connect([$config = array()]) 
Параметры:
  • $config (массив) – Значений соединений
Возвращает:

TRUE при успехе, FALSE если нет

Возвращаемый тип:

булево

Подключается к FTP серверу и журналирует. Настройки соединения устанавливаются путем передачи массива в функцию или вы можете сохранить их в файле конфигурации.

Вот пример, показывающий как установить настройки вручную:

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

$config['hostname'] = 'ftp.example.com';
$config['username'] = 'логин';
$config['password'] = 'пароль';
$config['port']     = 21;
$config['passive']  = FALSE;
$config['debug']    = TRUE;

$this->ftp->connect($config);

Установка настроек FTP в файле конфигурации

Если вы предпочитаете, то можете хранить FTP настройки в файле конфигурации. Просто создайте новый файл с названием ftp.php, добавьте массив $config в этот файл. Затем сохраните файл в application/config/ftp.php и он будет использоваться автоматически.

Доступные варианты подключения

Вариант имени Значение по умолчанию Описание
hostname n/a Имя FTP хоста (обычно что-то вроде: ftp.example.com)
username n/a Имя FTP пользователя
password n/a Пароль для FTP
port 21 Номер порта FTP сервера
debug FALSE TRUE/FALSE (булево): Следует ли включить отладку для отображения сообщений об ошибках
passive TRUE TRUE/FALSE (булево): Следует ли использовать пассивный режим
upload($locpath, $rempath[, $mode = 'auto'[, $permissions = NULL]]) 
Параметры:
  • $locpath (строка) – Локальный путь к файлу
  • $rempath (строка) – Удаленный путь к файлу
  • $mode (строка) – FTP режим, по умолчанию ‘auto’ (варианты: ‘auto’, ‘binary’, ‘ascii’)
  • $permissions (число) – Разрешения для файлов (восьмеричное)
Возвращает:

TRUE при успехе, FALSE если нет

Возвращаемый тип:

булево

Загрузка файлов на сервер. Вы должны указать локальный путь и удаленный, а при желании можете установить режим и разрешения. Пример:

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

Если используется режим ‘auto’ расширение файла будет как у исходного файла.

Если установлено, разрешения должны передаваться как восьмеричное значение.

download($rempath, $locpath[, $mode = 'auto']) 
Параметры:
  • $rempath (строка) – Удаленный путь к файлу
  • $locpath (строка) – Локальный путь к файлу
  • $mode (строка) – FTP режим, по умолчанию ‘auto’ (варианты: ‘auto’, ‘binary’, ‘ascii’)
Возвращает:

TRUE при успехе, FALSE если нет

Возвращаемый тип:

булево

Загружаем файл с сервера. Необходимо указать удаленный каталог и локальный путь, а при желании можете установить режим и разрешения. Пример:

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

Если используется режим ‘auto’ расширение файла будет как у исходного файла.

Возвращает FALSE если загрузка не выполняется (в том числе если PHP не имеет разрешения для записи в локальный файл).

rename($old_file, $new_file[, $move = FALSE]) 
Параметры:
  • $old_file (строка) – Старое имя файла
  • $new_file (строка) – Новое имя файла
  • $move (булево) – Будет ли выполняться перемещение
Возвращает:

TRUE при успехе, FALSE если нет

Возвращаемый тип:

булево

Позволяет переименовать файл. Переименовывает исходное имя файла имя/путь на новое имя файла/путь.

// Переименовывает green.html на blue.html
$this->ftp->rename('/public_html/foo/green.html', '/public_html/foo/blue.html');
move($old_file, $new_file) 
Параметры:
  • $old_file (строка) – Старое имя файла
  • $new_file (строка) – Новое имя файла
Возвращает:

TRUE при успехе, FALSE если нет

Возвращаемый тип:

булево

Позволяет переместить файл. Принимает исходный и конечный путь:

// Перемещает blog.html из "joe" в "fred"
$this->ftp->move('/public_html/joe/blog.html', '/public_html/fred/blog.html');

Примечание

Если конечное имя файла отличается, то файл будет переименован.

delete_file($filepath) 
Параметры:
  • $filepath (строка) – Путь к файлу для удаления
Возвращает:

TRUE при успехе, FALSE если нет

Возвращаемый тип:

булево

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

$this->ftp->delete_file('/public_html/joe/blog.html');
delete_dir($filepath) 
Параметры:
  • $filepath (строка) – Путь к директории для удаления
Возвращает:

TRUE при успехе, FALSE если нет

Возвращаемый тип:

булево

Позволяет удалить каталог и все его содержимое. Принимает конечнйы путь к каталогу с косой чертой.

Важно

Будьте ОЧЕНЬ осторожны с этим методом! Он рекурсивно удалит все в пределах указанного пути, включая вложенные папки и все файлы. Будьте абсолютно уверены, в правильности указанного пути. Старайтесь использовать сначала list_files(), чтобы убедиться что ваш путь правильный.

$this->ftp->delete_dir('/public_html/path/to/folder/');
list_files([$path = '.']) 
Параметры:
  • $path (строка) – Каталог
Возвращает:

Массив списка файлов или FALSE в случае неудачи

Возвращаемый тип:

массив

Позволяет получить список файлов на сервере и возвращается как массив. Необходимо указать путь к нужному каталогу.

$list = $this->ftp->list_files('/public_html/');
print_r($list);
mirror($locpath, $rempath) 
Параметры:
  • $locpath (строка) – Локальный путь
  • $rempath (строка) – Удаленный путь
Возвращает:

TRUE при успехе, FALSE если нет

Возвращаемый тип:

булево

Рекурсивно считывает локальную папку и все ее содержимое (включая вложенные папки) и создает дубликат/зеркало на основе FTP. Независимо от структуры каталогов исходного файла, путь будет воссоздан на сервере. Необходимо указать исходный путь и путь назначения:

$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');
mkdir($path[, $permissions = NULL]) 
Параметры:
  • $path (строка) – Путь к директории для создания
  • $permissions (число) – Права доступа (восьмеричное)
Возвращает:

TRUE при успехе, FALSE если нет

Возвращаемый тип:

булево

Позволяет создать каталог на вашем сервере. Принимает конечный путь с косой чертой в имени папки, которую вы хотите создать.

Доступ может быть установлен путем передачи восьмеричного значения вторым параметром.

// Создает папку с именем "bar"
$this->ftp->mkdir('/public_html/foo/bar/', 0755);
chmod($path, $perm) 
Параметры:
  • $path (строка) – Путь для изменения прав доступа
  • $perm (число) – Права доступа (восьмеричное)
Возвращает:

TRUE при успехе, FALSE если нет

Возвращаемый тип:

булево

Позволяет устанавливать права доступа для файлов. Укажите путь к файлу или каталогу, для которого вы хотите изменить права:

// Права доступа (Chmod) "bar" на 755
$this->ftp->chmod('/public_html/foo/bar/', 0755);
changedir($path[, $suppress_debug = FALSE]) 
Параметры:
  • $path (строка) – Каталог
  • $suppress_debug (число) – Стоит ли отключить отладочные сообщения для этой команды
Возвращает:

TRUE при успехе, FALSE если нет

Возвращаемый тип:

булево

Изменяет текущий рабочий каталог на указанный путь.

$suppress_debug параметр полезен в случае, если вы хотите использовать этот метод в качестве is_dir() альтернативы FTP.

close() 
Возвращает:TRUE при успехе, FALSE если нет
Возвращаемый тип:bool

Закрывает подключение к вашему серверу. Рекомендуется использовать, когда вы закончите загрузку.