0

我需要使用 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()'

那么除了这个方法还有其他方法吗?

4

2 回答 2

0

FTPS 和 SFTP 不是一回事。对于 SFTP,请尝试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->get('filename.remote');
?>
于 2013-04-21T01:02:52.427 回答
0

检查您的 phpinfo() 以确保 OpenSSL 和 ftp 模块都在那里。

从 ftp_ssl_connect() 上的 PHP.net 页面

注意:为什么这个函数可能不存在 ftp_ssl_connect() 仅当 ftp 模块和 OpenSSL 支持都静态内置到 php 中时才可用,这意味着在 Windows 上这个函数将在官方 PHP 构建中未定义。要使此功能在 Windows 上可用,您必须编译自己的 PHP 二进制文件。

哦,另一种方法是可能使用安全的 curl 调用。

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

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

于 2013-04-19T17:47:10.493 回答