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.