无法使用php从服务器获取文件

时间:2013-04-19 17:42:54

标签: php ftp ftps

我需要使用php代码从服务器(SFTP)获取文件并将其保存在我的本地计算机中。 我正在使用ftp_ssl_connect()。代码是

$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()'

除了这种方法之外还有其他方法吗?

2 个答案:

答案 0 :(得分:0)

签入你的phpinfo()以确保OpenSSL和ftp模块都在那里。

来自ftp_ssl_connect()上的PHP.net页面

  

注意:为什么此功能可能不存在   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

答案 1 :(得分: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');
?>