Отправка файлов из стека LAMP на SFTP-сервер Windows через PHP - PullRequest
1 голос
/ 08 декабря 2010

У меня много проблем с отправкой файла с сервера linux на сервер windows через SFTP через PHP.
Кажется, что я подключаюсь нормально, но всегда выдает ошибку, которую не могусоздайте файл на конце удаленного сервера.Возможно, я ошибаюсь в синтаксисе местоположения файла.

Я пробовал два способа сейчас, один с использованием ssh2_scp_send(), а другой пытается fopen(ssh2.sftp://D:/path/file.csv)

Также, входя всервер sftp через клиента помещает меня в мою домашнюю папку (то есть D: \ path \ to \ home), но если я делаю ssh2_exec($connection, 'cd'); и печатаю поток на экран, это показывает, что мой сеанс ssh в настоящее время находится вфайловая система Windows на диске C.

Я надеялся, что у кого-нибудь будет совет по этому поводу.И я не женат на этом методе.Я использую php на своем конце, потому что все это происходит из модуля drupal, но я всегда мог попробовать и включить другой метод.

Ответы [ 2 ]

1 голос
/ 11 декабря 2010

Если все, что вы хотите сделать, это отправить один файл, я думаю, что curl работает, но если вы хотите сделать что-то еще - например, проверить, загружен ли файл, загрузить несколько файлов, использовать аутентификацию с помощью публичного ключа или что-то еще, керл просто не достаточно универсален для этого.

Я рекомендую использовать phpseclib, чистую реализацию PHP SFTP .

0 голосов
/ 08 декабря 2010

CURL может использовать библиотеку sftp.

$localfile = 'test.txt';
  $ch = curl_init();
  $fp = fopen ($localfile, "r") or die('Cannot open textfile');
  curl_setopt($ch, CURLOPT_URL,"sftp://123.123.123.123:10022/username/test.txt");
  curl_setopt($ch, CURLOPT_USERPWD, "username:password");
  curl_setopt($ch, CURLOPT_UPLOAD, 1);
  curl_setopt($ch, CURLOPT_INFILE, $fp);
  if(curl_exec($ch)){
    echo 'File was successfully transferred using SFTP';
  }else{
    echo 'File was unable to be transferred using SFTP';
  }

  curl_close ($ch);
...