Připojení k SFTP v PHP

Pomocí phpseclib 2.0

Pokud na hostingu nemám možnost zapnutí knihovy ftp_ssl_connect, sahám po skvělém phpseclib.

Připojení k SFTP serveru pomocí loginu a hesla

use phpseclib\Net\SFTP; $sftp = new SFTP('www.example.com'); if (!$sftp->login('username', 'password')) { throw new Exception('Login failed'); }

Připojení k SFTP serveru pomocí privátního klíče

use phpseclib\Crypt\RSA; use phpseclib\Net\SFTP; $sftp = new SFTP('www.example.com'); $Key = new RSA(); $Key->setPassword('passphrase'); // pokud Váš privátní klíč má heslo $Key->loadKey(file_get_contents('path_to_private_key')); if (!$sftp->login('username', $Key)) { throw new Exception('Login failed'); }

Upload dat na server

$sftp->put('filename.remote', 'nějaký_obsah_uploadovaného_souboru');

Upload souboru

$sftp->put('filename.remote', 'filename.local', SFTP::SOURCE_LOCAL_FILE);

Stažení souboru

echo $sftp->get('filename.remote'); // s přístupem k datům ihned $sftp->get('remote_file', 'local_file'); // s uložením do lokálního souboru

Změna adresáře

$sftp->chdir('directory_name');

Výpis adresáře

$files = $sftp->nlist();

Mazání, přejmenování souboru nebo adresářů

$sftp->delete('filename.remote'); // rekurzivní mazání souborů nebo adresářů $sftp->delete('dirname.remote', false); // mazání bez rekurze $sftp->rename('filename.remote', 'newname.remote');

Doplnění:

  • Instalace verze 2.0 pomocí composeru: composer require phpseclib/phpseclib:~2.0
  • Instalace verze 1.0 pomocí composeru: composer require phpseclib/phpseclib:~1.0
  • Github repositář
  • Dokumentace

Nestahujte větěv master, ta slouží pro vývoj a neměla by přijít na produkci!


PHP září 2018