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:
- hostname - nazwa hosta FTP. Zazwyczaj coś w rodzaju: ftp.example.com
- username - nazwa użytkownika FTP.
- password - hasło użytkownika FTP.
- port - Numer portu. Domyślnie ustawiony na 21.
- debug - TRUE/FALSE (boolean). Czy włączyć opcję debuggowania, aby wyświetlać wiadomości błędu.
- passive - TRUE/FALSE (boolean). Czy używać trybu pasywnego. Tryb pasywny jest ustawiony domyślnie.
$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.