【问题标题】:PHP CURL SFTP Read File?PHP CURL SFTP 读取文件?
【发布时间】:2022-01-17 03:35:35
【问题描述】:

我试图弄清楚如何通过 php/curl 从远程 SFTP 连接读取文件并获取内容。我目前有下面的代码来读取目录中的文件列表。

$ch = curl_init('sftp://' . $sftpServer . ':' . $sftpPort . $sftpRemoteDir . '/');
curl_setopt($ch, CURLOPT_USERPWD, '*****:*****');
curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_SFTP);
curl_setopt($ch, CURLOPT_DIRLISTONLY, '1L');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch); 
$error = curl_error($ch);
curl_close($ch);

如果我将 curl_init 更改为下面的行(添加了文件名),我该如何读取该文件?

$ch = curl_init('sftp://' . $sftpServer . ':' . $sftpPort . $sftpRemoteDir . '/filename.txt');

【问题讨论】:

  • 我无法帮助你处理 curl,但我可以告诉你 phpseclib 有支持,而且代码更便携。

标签: php curl sftp


【解决方案1】:

$response 变量将包含文件数据。如果要将文件保存到服务器的机器上,可以使用file_put_contents 写入该文件的内容。

$ch = curl_init('sftp://' . $sftpServer . ':' . $sftpPort . $sftpRemoteDir . '/filename.txt');
curl_setopt($ch, CURLOPT_USERPWD, '*****:*****');
curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_SFTP);
curl_setopt($ch, CURLOPT_DIRLISTONLY, '1L');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch); 
$error = curl_error($ch);
curl_close($ch);

file_put_contents("/path/to/save/filename.txt", $response);

如果你想读取明文(可用于文本文件,包括.txts),那么你应该可以简单地读取$response变量,它应该是一个字符串。

【讨论】:

    猜你喜欢
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多