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

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