Sto scrivendo un semplice client SFTP in PHP perché abbiamo la necessità di recuperare i file tramite server remoti in modo programmatico. Sto usando l'estensione PECL SSH2.Impossibile far funzionare SFTP in PHP
Ho incontrato un blocco stradale, però. La documentazione su php.net suggerisce che si può fare questo:
$stream = fopen("ssh2.sftp://$sftp/path/to/file", 'r');
Tuttavia, ho un metodo di ls che cerca di qualcosa di simile
public function ls($dir)
{
$rd = "ssh2.sftp://{$this->sftp}/$dir";
$handle = opendir($rd);
if (!is_resource($handle)) {
throw new SFTPException("Could not open directory.");
}
while (false !== ($file = readdir($handle))) {
if (substr($file, 0, 1) != '.'){
print $file . "\n";
}
}
closedir($handle);
}
ottengo il seguente errore:
PHP Warning: opendir(): Unable to open ssh2.sftp://Resource id #5/outgoing on remote host
Questo ha perfettamente senso perché è quello che succede quando lanci una risorsa in una stringa. La documentazione è sbagliata? Ho provato a sostituire la risorsa con host, nome utente e host e questo non ha funzionato neanche. So che il percorso è corretto perché posso eseguire SFTP dalla riga di comando e funziona bene.
Qualcun altro ha provato a utilizzare l'estensione SSH2 con SFTP? Mi sto perdendo qualcosa di ovvio qui?
UPDATE:
ha installato SFTP su un'altra macchina in-house e funziona bene. Quindi, ci deve essere qualcosa sul server che sto cercando di connettersi che non funziona.
Puoi confermare che la connessione SSH2 sta lavorando? che ne dici di usare una delle altre funzioni di ssh2? –
ssh2_connect() ssh2_auth_password() ssh2_sftp() funzionano tutti correttamente. Ho una risorsa di connessione valida per quanto posso dire. –