SCP с PHP - не работает - PullRequest
       40

SCP с PHP - не работает

0 голосов
/ 17 сентября 2011

Попытка загрузить файл на другой сервер с помощью PHP. Он успешно соединяется с ssh_connect(), но когда я включаю ssh2_scp_send, отображаемая страница остается пустой (как будто есть синтаксическая ошибка), и он, конечно, не загружает файл. Есть идеи, почему это может быть? Я бы предпочел использовать PHP, но если он не работает, я полагаю, что я мог бы сделать системный вызов CLI scp с файлами закрытых ключей, но я бы предпочел не делать этого. Альтернативные предложения приветствуются.

Информация: Debian с Apache

Установлено: libssh2-1-dev libssh2-php php-pear php5-dev; pecl установить -f ssh2

$ssh = ssh2_connect('localhost', 22);
ssh2_auth_password($ssh, 'user', 'password');
ssh2_scp_send($ssh, 'original', 'destination'); # does not work
ssh2_exec($ssh, 'exit'); #does not help

Есть идеи?

1 Ответ

1 голос
/ 18 сентября 2011

Лично я бы порекомендовал использовать phpseclib, чистую реализацию PHP SFTP :

<?php
include('Net/SFTP.php');

$sftp = new Net_SFTP('www.domain.tld');
if (!$sftp->login('username', 'password')) {
    exit('Login Failed');
}

echo $sftp->pwd() . "\r\n";
$sftp->put('filename.ext', 'hello, world!');
print_r($sftp->nlist());
?>

Главным среди проблем libssh2 является тот факт, что его нелегко установить.Авторы оригинала отказались от него.Исходный код на php.net требует модификации, чтобы он даже компилировался, и хотя вы можете установить его с помощью apt-get в Ubuntu прямо сейчас, что произойдет, если для работы потребуется более двух новых строк?А что, если Linux-бокс, на котором вы пытаетесь заставить его работать, не Ubuntu?

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

...