Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

# CodeIgniter User Guide Version 2.1.0

Search User Guide

# Класс FTP

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

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

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

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

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

Загруженный объект класса доступен как $this->ftp

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

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

`$this->load->library('ftp');
$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-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'] = 'your-username';
$config['password'] = 'your-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'] = 'your-username';
$config['password'] = 'your-password';
$config['debug'] = TRUE;
$this->ftp->connect($config);
$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');
$this->ftp->close();`

# Справка по функциям

## $this->ftp->connect()

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

Вот пример с ручной установкой параметров:

`$this->load->library('ftp');
$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['port'] = 21;
$config['passive'] = FALSE;
$config['debug'] = TRUE;
$this->ftp->connect($config);
`

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

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

### Доступные опции соединения:

- hostname - имя хоста FTP. Обычно что-то вроде: ftp.example.com
- username - имя пользователя FTP.
- password - пароль пользователя FTP.
- port - Номер порта. По умолчанию 21.
- debug - `TRUE/FALSE` (булево). Включать ли режим отладки для отображения сообщений об ошибках.
- passive - `TRUE/FALSE` (булево). Использовать ли пассивный режим. По умолчанию используется пассивный режим.

## $this->ftp->upload()

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

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

Опции режимов: `ascii`, `binary` и `auto` (по умолчанию). Если используется `auto`, функция будет полагаться на расширение исходного файла.

Права могут быть переданы `восьмеричным` значением в четвертом параметре.

## $this->ftp->download()

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

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

Опции режима: `ascii`, `binary`, and `auto` (по умолчанию). Если используется `auto`, функция будет полагаться на расширение исходного файла.

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

## $this->ftp->rename()

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

`// Переименовывает green.html в blue.html
$this->ftp->rename('/public_html/foo/green.html', '/public_html/foo/blue.html');`

## $this->ftp->move()

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

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

Примечание: если имя файла в назначении отличается от оригинального, файл будет переименован.

## $this->ftp->delete_file()

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

`$this->ftp->delete_file('/public_html/joe/blog.html');`

## $this->ftp->delete_dir()

Позволяет вам удалить директорию и все ее содержимое. Передайте путь к директории с ведущим слешом.

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

`$this->ftp->delete_dir('/public_html/path/to/folder/');`

## $this->ftp->list_files()

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

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

## $this->ftp->mirror()

Рекурсивно считывает локальную директорию и все ее содержимое (включая поддиректории) и создает ее зеркало (полную копию) через FTP. Что бы в ней ни было — все будет восстановлено на удаленном сервере. Вы должны передать локальный путь и путь назначения:

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

## $this->ftp->mkdir()

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

`// Создает директорию "bar"
$this->ftp->mkdir('/public_html/foo/bar/', DIR_WRITE_MODE);`

## $this->ftp->chmod()

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

`// Chmod "bar" в 777
$this->ftp->chmod('/public_html/foo/bar/', DIR_WRITE_MODE);`

## $this->ftp->close();

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

### Поделиться

Переведено в компании Аринт.

# Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

## Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter