SCP с PHP - не работает
Попытка загрузить файл на другой сервер, используя 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 ответ
Лично я бы рекомендовал использовать 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?
Если вам когда-нибудь понадобится создать новый сервер, на котором будет размещаться ваш сайт, вы не хотите зацикливаться на том, чтобы тратить часы на кучу эзотерических зависимостей.