ssh2_scp_send: не удается, возможно, из-за неизвестного удаленного каталога

Я использую ssh2_scp_send для передачи файла с одного сервера на другой через SFTP. Хотя я могу подтвердить доступ к удаленному серверу и передать файлы с помощью приложения с графическим интерфейсом (FileZilla), мой вызов ssh2_scp_send не выполняется.

Я думаю, что это может быть из-за того, что я не знаю (и не могу легко узнать) полный путь к удаленному серверу. Я предположил, что если я просто передам имя файла, то по умолчанию к родительскому каталогу у пользователя будет доступ.

$conn = ssh2_connect('domain', 22);
$auth = ssh2_auth_password($conn, 'user', 'password');

if ($auth) {
//send the file
$send = ssh2_scp_send($conn, $file, $data['xml_filename']);
}

Я пытался с помощью ssh2_exec($ssh_conn, 'ls -la'); извлечь каталог и попытаться выяснить местоположение, но это не удается (учетные данные доступа, которые я имею, не разрешают команды SSH кроме SFTP).

Мои вопросы:

  1. Есть ли простой способ узнать полный удаленный путь?
  2. Есть ли способ сказать ssh2_scp_send просто использовать место назначения по умолчанию?
  3. что еще я должен устранить неполадки? Я только предполагаю, что вышеизложенное является проблемой — это может быть что-то совершенно другое.

2

Решение

ssh2_scp_send не делает SFTP — он делает SCP. Вы не можете сделать SCP без доступа к оболочке.

Если вы настаиваете на использовании libssh2 vs phpseclib, вам придется использовать ssh2.sftp:// fopen обертка, а затем сделать fwrite() или же fputs(),

Что касается получения полного удаленного пути по умолчанию … ssh2_sftp_realpath('.') должен сделать свое дело.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]