Podręcznik użytkownika CodeIgniter wersja 2.2.1


Klasa FTP

Klasa FTP pozwala na przesyłanie plików na zdalny serwer. Pliki na serwerze mogą być również przenoszone i usuwane. Można również zmieniać ich nazwy. Klasa FTP dostarcza również funkcję przenoszenia całych katalogów na zdalny serwer za pośrednictwem protokołu FTP.

Uwaga:  Protokoły SFTP i SSL FTP nie są wspierane - tylko standardowy protokuł FTP.

Inicjalizowanie klasy

Tak jak większość innych klas w CodeIgniterze, klasa FTP jest inicjalizowana w Twoim kontrolerze poprzez funkcję $this->load->library:

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

Po załadowaniu, obiekt klasy FTP będzie dostępny poprzez wywołanie: $this->ftp

Przykłady wykorzystania

W tym przykładzie otwierane jest połączenie do serwera FTP, a plik lokalny jest przesyłany w trybie ASCII. Uprawnienia pliku są ustawiane na 755. Uwaga: Ustawienie uprawnień dla pliku wymaga 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();

W tym przykładzie zwracana jest lista plików z serwera.

$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();

W tym przykładzie lokalny folder jest przesyłany na serwer.

$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();

Opis funkcji

$this->ftp->connect()

Łączy i loguje na serwer FTP. Preferencje połączenia są przekazywane do funkcji za pomocą tablicy lub mogą być przechowywane w pliku konfiguracyjnym.

Oto przykład w jaki sposób ustawić preferencje ręcznie:

$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);

Ustawianie preferencji połączenia za pomocą pliku konfiguracyjnego

Jeśli chcesz, możesz ustawić preferencje połączenia z serwerem FTP w pliku konfiguracyjnym. Wystarczy, że utworzysz plik o nazwie ftp.php z tablicą $config w środku i zapisz go w config/ftp.php, a zostanie on użyty automatycznie.

Dostępne opcje połącznia:

$this->ftp->upload()

Wgrywa plik na Twój serwer. Musisz określić lokalną ścieżkę i ścieżkę zdalną (na serwerze). Opcjonalnie możesz również określić tryb i uprawnienia. Przykład:

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

Opcje przesyłania to:  ascii, binary i auto (domyślnie). Jeśli użyty jest tryb auto, to tryb dla pliku będzie określony na podstawie jego rozszerzenia.

Uprawnienia są dostępne jeśli używasz PHP 5 i mogą one zostać przypisane jako wartość ósemkowa w czwartym parametrze.

$this->ftp->download()

Pobiera plik z Twojego serwera. Musisz określić zdalną ścieżkę (na serwerze) i lokalną. Możesz też opcjonalnie określić tryb przesyłania. Przykład:

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

Opcje przesyłania to:  ascii, binary i auto (domyślnie). Jeśli użyty jest tryb auto, to tryb dla pliku będzie określony na podstawie jego rozszerzenia.

Zwraca wartość FALSE jeśli pobieranie zakończyło się niepowodzeniem (włączając w to brak uprawnień dla PHP do zapisu lokalnego pliku).

$this->ftp->rename()

Pozwala na zmianę nazwy pliku. Musisz dostarczyć żródłową nazwę wraz ze ścieżką do pliku oraz nową nazwę wraz ze ścieżką do pliku.

// Zmienia nazwę z green.html na blue.html
$this->ftp->rename('/public_html/foo/green.html', '/public_html/foo/blue.html');

$this->ftp->move()

Pozwala na przeniesienie pliku. Musisz dostarczyć źródłową ścieżkę oraz ścieżkę docelową:

// Przenosi blog.html z folderu "joe" do "fred"
$this->ftp->move('/public_html/joe/blog.html', '/public_html/fred/blog.html');

Uwaga: Jeśli docelowa nazwa pliku jest inna niż źródłowa, to plik zmieni nazwę.

$this->ftp->delete_file()

Pozwala na usunięcie pliku. Musisz dostarczyć ścieżkę i nazwę pliku.

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

$this->ftp->delete_dir()

Pozwala na usunięcie folderu i wszystkiego co się w nim znajduje. Musisz dostarczyć ścieżkę do katalogu ze slashem na końcu.

Ważne  Bądź BARDZO ostrożny podczas używania tej funkcji. Usunie ona rekursywnie wszystko co znajduje się w danej ścieżce, włączając w to subfoldery i wszystkie pliki. Upewnij się, że ścieżka jest prawidłowa. Spróbuj użyć najpierw funkcji list_files() aby zweryfikować, że Twoja ścieżka jest poprawna.

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

$this->ftp->list_files()

Pozwala na zwrócenie listy plików na serwerze w postaci tablicy. Musisz dostarczyć ścieżkę do folderu.

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

print_r($list);

$this->ftp->mirror()

Rekursywnie odczytuje lokalny folder i wszystko co zawiera (włączając w to subfoldery) i tworzy kopię na serwerze FTP. Niezależnie od tego jaka była struktura folderów w oryginalnej ścieżce, zostanie ona odtworzona na serwerze. Musisz dostarczyć ścieżkę źródłową oraz ścieżkę docelową (na serwerze):

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

$this->ftp->mkdir()

Pozwala na utworzenie folderu na Twoim serwerze. Na końcu ścieżki musisz dołączyć nazwę folderu, który chcesz stworzyć ze slashem na końcu. Uprawnienia mogą być przypisane jako wartość ósemkowa w czwartym parametrze (jeśli używasz PHP 5).

// Tworzy folder o nazwie "bar"
$this->ftp->mkdir('/public_html/foo/bar/', DIR_WRITE_MODE);

$this->ftp->chmod()

Pozwala na określenie uprawnień. Musisz dostarczyć ścieżkę do pliku lub folderu, do którego mają zostać przypisane uprawnienia:

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

$this->ftp->close();

Zamyka połączenie z Twoim serwerem. Zalecane jest skorzystanie z tej funkcji po zakończeniu wgrywania plików.