2013-04-19 3 views
0

Мне нужно получить файл с сервера (SFTP) с помощью PHP-кода и сохранить его на моей локальной машине. Я использую ftp_ssl_connect() для this.The кодаНе удается получить файл с сервера с помощью php

$local_file = '/var/www/filename.csv'; 
$server_file = '/foldername/filename.csv'; 
$ftp_connection = ftp_ssl_connect('example.com','port'); 
$login_result = ftp_login($ftp_connection, 'username', 'password'); 
if (ftp_get($ftp_connection, $local_file, $server_file, FTP_BINARY)) { 
    echo "Successfully written to $local_file\n"; 
} else { 
    echo "There was a problem\n"; 
} 

ftp_close($ftp_connection); 

Но им получить ошибку как

'Fatal error: Call to undefined function ftp_ssl_connect()' 

Так есть ли другой способ сделать это otherthan этого метода?

ответ

0

Проверьте свой phpinfo(), чтобы убедиться, что и OpenSSL, и ftp-модуль.

На странице PHP.net на ftp_ssl_connect()

Примечание: Почему эта функция может не существовать ftp_ssl_connect() доступна только в том случае, как FTP-модуль и поддержка OpenSSL построен статически в PHP, это означает, что в Windows эта функция будет не определена в официальных сборках PHP. Чтобы сделать эту функцию доступной в Windows, вы должны скомпилировать свои собственные двоичные файлы PHP.

О, и альтернативный метод будет заключаться в том, чтобы использовать безопасный звонок.

http://www.linuxformat.co.uk/wiki/index.php/PHP_-_The_Curl_library

http://php.net/manual/en/book.curl.php

+0

Я пробовал ssh2_connect(). Но это тоже не работает. Существуют ли какие-либо спецификации, необходимые для этой функции? –

0

FTPS и SFTP не то же самое. Для SFTP попробуйте phpseclib, a pure PHP SFTP implementation. например.

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

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

echo $sftp->get('filename.remote'); 
?>