Класс 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()
Позволяет вам установить права файла. Передайте путь к файлу или директории:
// Устанавливает режим доступа к каталогу "bar" в 777
$this->ftp->chmod('/public_html/foo/bar/', DIR_WRITE_MODE);
$this->ftp->close();
Закрывает соединение с сервером. Рекомендуется выполнять после завершения загрузок.