2009-04-04 5 views
15

Sono in procinto di creare un'app Web che, oltre ad altre cose, dovrà connettersi a un server FTP per scaricare o caricare file. L'applicazione è scritta in PHP ed è ospitata su un server Linux.SFTP da PHP

Quello che mi chiedevo è se sia possibile o meno fornire supporto per i server SFTP, ma dopo alcune ricerche veloci su Google sembra che non sia tutto così semplice.

Quindi, la domanda è: quale sarebbe il modo migliore per utilizzare SFTP da PHP? Esiste una classe che potrebbe anche fornire supporto per FTP e SFTP in modo che le stesse funzioni possano essere utilizzate per entrambi?

risposta

14

Sì, lo puoi fare con cURL. Per passare da FTP a SFTP è sufficiente modificare il modulo di opzione protocollo CURLPROTO_FTP a CURLPROTO_SFTP.

cURL supporta i seguenti protocolli: HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TELNET, LDAP, LDAPS, DICT, FILE, TFTP.

BTW. SFTP non deve essere confuso con FTPS. SFTP è SSH File Transfer Protocol, mentre FTPS è FTP su SSL.

+0

In realtà non hanno nemmeno bisogno di pasticciare con 'CURLOPT_PROTOCOLS'. Puoi semplicemente mettere 'sftp: //' nella parte anteriore del nome host che passi con 'CURLOPT_URL' e cURL rileverà e userà automaticamente SFTP. – sakatc

4

Nel caso qualcuno fine-up in questa pagina.

È inoltre possibile utilizzare il PHP Bindings for LIBSSH2 con PHP. Dovrebbe essere installato correttamente sul sistema.

In Ubuntu 10.04 e Debian Lenny, ovviamente con tutte le dipendenze

apt-get install libssh2-php 
3

Il problema con la raccomandazione di Igor è che, tra le altre cose, rende il codice molto meno portatile (libssh2 non è installato molto molti host), ha un'API molto più intuitiva basata su OOP e l'autenticazione RSA ha senso (libssh2 richiede di memorizzare la chiave pubblica e la chiave privata separatamente sul file system, il fatto che debbano essere forniti separatamente è stupido dal la maggior parte dei formati di chiavi private include la chiave pubblica al loro interno).

phpseclib è anche più veloce:

http://kevin.vanzonneveld.net/techblog/article/make_ssh_connections_with_php/#comment_3759