CodeIgniter User Guide Version 2.0.0


Класс FTP

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

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

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

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

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

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

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

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

$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 в этот файл. Потом сохраните его как config/ftp.php и он будет использоваться автоматически.

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

$this->ftp->upload()

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

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

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

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

$this->ftp->download()

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

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

Опции режима:  ascii, binary и 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();

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