PHP SFTP / SSH перевод - PullRequest
       35

PHP SFTP / SSH перевод

3 голосов
/ 22 июня 2011

Я недавно отправил вопрос, но спросил о FTP, что является неправильным вопросом (дох!).Мне нужно автоматически передавать изображения (например, test.jpg) с одного сервера на другой с использованием SFTP / SSH.

Может кто-нибудь объяснить, как я могу это сделать?Я совершенно новичок в такого рода вещах, поэтому я буду благодарен как можно большему количеству информации.

Спасибо за любую помощьЯ обнаружил, что это работает:

<?php

     include('Net/SFTP.php');

     $image = 'logo.jpg'; //image to be uploaded - needs to be in the same directory as this script e.g. just logo.jpg

     $image_contents = file_get_contents($image); // location of image to be uploaded

     $sftp = new Net_SFTP('***.**.**.**'); // server address to connect to
     if (!$sftp->login('***', '***')) { // server login details
         exit('Login Failed');
     }

     echo $sftp->pwd();
     $sftp->put($image, $image_contents); // upload a file $image with the image contents.

?>

Не удалось запустить SSH, но, надеюсь, это поможет кому-то в будущем:)

Ответы [ 3 ]

2 голосов
/ 22 июня 2011

Как это часто бывает, вы не предоставили много информации ни о том, что вы пытаетесь достичь, ни об ограничениях.

Откуда происходит изображение? Как быстро это должно быть воспроизведено? Являются ли серверы эквивалентными узлами в кластере?

Поскольку оба сервера уже используют HTTP, зачем использовать разные протоколы для передачи контента?

Как и предполагает Антонио, вы можете просто выполнить scp - но это сработает, только если у вас настроены пары ключей.

Более гибким решением (при условии, что ssh является требованием) будет использование ssh-привязок в PHP

2 голосов
/ 22 июня 2011

Простой способ справиться с этим - вызвать PHP exec и выполнить вызов unix scp.

exec("scp $local_file user1@somehost:$remote_file");
1 голос
/ 22 июня 2011

Вы можете попробовать ssh2_scp_send :

$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');

ssh2_scp_send($connection, '/local/filename', '/remote/filename', 0644);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...