Я пишу простой SFTP-клиент на PHP, потому что нам нужно программно извлекать файлы через n удаленных серверов. Я использую расширение PECL SSH2.Не удается заставить SFTP работать в PHP
Я столкнулся с дорожным блоком. Документация по php.net предполагает, что вы можете сделать это:
$stream = fopen("ssh2.sftp://$sftp/path/to/file", 'r');
Однако, у меня есть МНК, который пытается что-то подобное
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);
}
Я получаю следующее сообщение об ошибке:
PHP Warning: opendir(): Unable to open ssh2.sftp://Resource id #5/outgoing on remote host
Это имеет смысл, потому что это происходит, когда вы добавляете ресурс в строку. Неверная документация? Я попытался заменить ресурс хостом, именем пользователя и хостом, и это тоже не сработало. Я знаю, что путь правильный, потому что я могу запускать SFTP из командной строки, и он отлично работает.
Кто-нибудь еще пытался использовать SSH2 extenstion с SFTP? Я пропустил что-то очевидное здесь?
UPDATE:
установки я SFTP на другой машине, в доме, и она работает просто отлично. Итак, должно быть что-то о том, что сервер, с которым я пытаюсь подключиться, не работает.
Можете ли вы подтвердить, что ssh2 соединение работает? как насчет использования любой из других функций ssh2? –
ssh2_connect() ssh2_auth_password() ssh2_sftp() работают корректно. Насколько я могу судить, у меня есть действующий ресурс связи. –