Php通过sftp获取Excel文件



我是一个完全的PHP菜鸟,并试图通过这里的论坛解决我的问题,但没有运气! 我有一个小的下载脚本,可以从FTP服务器下载.csv文件。该服务器将更改为 sftp 服务器。

我面临的问题是我无法再连接到服务器,并且看不到为什么我的代码不起作用。任何帮助非常感谢。

我的旧脚本:

function downloadFile(){
$ftp_server = "feed.onftpsite.com";
$ftp_username="1234";
$ftp_userpass="1234";
$conn_id = ftp_ssl_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_username, $ftp_userpass);
ftp_pasv($conn_id, true);
$server_file = "map/file.csv";
$localfile = "some_other_file.csv";
if (ftp_get($conn_id, $localfile, $server_file, FTP_ASCII)){
echo "Successfully downloaded $localfile.";
}else{
echo "Error in downloading $localfile.";
}
ftp_close($conn_id);
}

现在我尝试将其更改为 sftp 格式:

function downloadFile(){
$ftp_server = "feed.onftpsite.com";
$ftp_username="1234";
$ftp_userpass="1234";
$conn_id = ssh2_connect($ftp_server, 22);
$login_result = ssh2_auth_password($conn_id, $ftp_username, $ftp_userpass);
ftp_pasv($conn_id, true);
$server_file = "map/file.csv";
$localfile = "some_other_file.csv";
if (fopen($conn_id, $localfile, $server_file, FTP_ASCII)){
echo "Successfully downloaded $localfile.";
}else{
echo "Error in downloading $localfile.";
}
//ftp_close($conn_id);
}

为什么上面的代码不起作用?

不确定错误是什么,但我可以建议尝试phpseclib。否则,请尝试从上面的代码中提供错误消息。

phpseclib 使用起来非常简单,用于 exammple:

$sftp = new phpseclibNetSFTP($host);
if (!$sftp->login($user, $password)) {
exit('Login Failed');
}
$sftp->chdir('textfiles/');
$file = $sftp->get('example.txt');

最新更新