php - ssh2_scp_send - ssh2_connect
Cómo SFTP con PHP? (4)
He encontrado muchos scripts PHP para clientes web FTP. Necesito implementar un cliente SFTP como una aplicación web en PHP. ¿PHP es compatible con SFTP? No pude encontrar muestras Puede alguien ayudarme con esto?
Descubrí que "phpseclib" debería ayudarte con esto (SFTP y muchas más características). http://phpseclib.sourceforge.net/
Para colocar el archivo en el servidor, simplemente llame (Ejemplo de código desde http://phpseclib.sourceforge.net/sftp/examples.html#put )
<?php
include(''Net/SFTP.php'');
$sftp = new Net_SFTP(''www.domain.tld'');
if (!$sftp->login(''username'', ''password'')) {
exit(''Login Failed'');
}
// puts a three-byte file named filename.remote on the SFTP server
$sftp->put(''filename.remote'', ''xxx'');
// puts an x-byte file named filename.remote on the SFTP server,
// where x is the size of filename.local
$sftp->put(''filename.remote'', ''filename.local'', NET_SFTP_LOCAL_FILE);
Las funciones ssh2 no son muy buenas. Difícil de usar y aún más difícil de instalar, usarlos garantizará que su código tenga cero portabilidad. Mi recomendación sería usar phpseclib, una implementación pura de PHP SFTP .
sftp
una sftp
system
completa y escribí una clase que crea un archivo por lotes y luego llama a sftp
través de una llamada al system
. No es la manera más agradable (o más rápida) de hacerlo, pero funciona para lo que necesito y no requiere ninguna instalación de bibliotecas adicionales o extensiones en PHP.
Podría ser el camino a seguir si no quieres usar las extensiones ssh2
PHP tiene envolturas de flujo ssh2 (deshabilitadas de forma predeterminada), por lo que puede usar conexiones sftp con cualquier función que admita contenedoras de flujo utilizando ssh2.sftp://
para el protocolo, por ejemplo
file_get_contents(''ssh2.sftp://user:[email protected]:22/path/to/filename'');
o - cuando también usa la extensión ssh2
$connection = ssh2_connect(''shell.example.com'', 22);
ssh2_auth_password($connection, ''username'', ''password'');
$sftp = ssh2_sftp($connection);
$stream = fopen("ssh2.sftp://$sftp/path/to/file", ''r'');
Ver http://php.net/manual/en/wrappers.ssh2.php
En una nota al margen, ya hay bastantes preguntas sobre este tema:
- https://.com/search?q=sftp+php