如何使用PHP使用cURL获取SFTP文件

时间:2013-06-11 18:24:44

标签: php curl sftp

我正在尝试使用PHP中的cURL库来从远程服务器获取SFTP文件,如下所示。我收到no such file exists错误。我有什么想法吗?

<html>
<body>

<?php
$user="username";
$pass="password";
$filename="/opt/vmstat/vmstat_file";
$c = curl_init("sftp://$user:$pass@server1/$filename");
$fh = fopen($filename, 'r') or die($php_errormsg);
curl_setopt($c, CURLOPT_PROTOCOLS, CURLPROTO_SFTP);
curl_setopt($c, CURLOPT_FILE, $fh);
curl_exec($c);
curl_close($c);

?>

</body>
</html> 

错误:

Warning: fopen(="/opt/vmstat/vmstat_file): failed to open stream: No such file or directory in C:\inetpub\wwwroot\sftp.php on line 9

3 个答案:

答案 0 :(得分:2)

$c = curl_init("sftp://$user:$pass@server1/opt/vmstat/vmstat_file");
curl_setopt($c, CURLOPT_PROTOCOLS, CURLPROTO_SFTP);
$data = curl_exec($c);
curl_close($c);

这很有效。

答案 1 :(得分:0)

检查文件所有权和权限。 你正在做fopen($filename, 'w')。你只想说fopen($filename, 'r')吗?

答案 2 :(得分:0)

我认为问题在于你打开本地文件句柄进行阅读。

$fh = fopen($filename, 'r') or die($php_errormsg);

我拿了你的代码并更改了&#39; r&#39;到了&#39;,它对我有用。