我需要使用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()'
除了这种方法之外还有其他方法吗?
答案 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
答案 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');
?>