【问题标题】:Permission denied when tring to download file from SFTP server using cURL in PHP尝试在 PHP 中使用 cURL 从 SFTP 服务器下载文件时权限被拒绝
【发布时间】:2016-09-20 02:02:55
【问题描述】:

我正在尝试通过集成 SFTP 和 cURL 来缩短从 SFTP 下载文件所需的时间。

我的代码如下:

$host = "192.168.1.1";
$username = "testuser";
$password = "testpass";
$fn = 'testfile.zip';
$remote = "sftp://".$username.":".$password ."@".$host.":22/home/testfolder/saleskits/".$fn;

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $remote); #input
curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_SFTP);
curl_exec($curl);
if (!curl_errno($curl)) {
    $info = curl_getinfo($curl);
    echo 'Took ', $info['total_time'], ' seconds to send a request to ', $info['url'], "\n";
}
else{
    echo 'Curl error: ' . curl_error($curl);
}
curl_close($curl);

输出为“Curl 错误:无法打开远程文件进行读取:权限被拒绝”。如何通过权限或更改文件的权限?

【问题讨论】:

  • 用户名\密码好像错误
  • 但它没有显示身份验证失败。我尝试设置错误的密码,显示错误“身份验证失败”。
  • 您可以使用任何其他(甚至是 GUI)SFTP 客户端下载文件吗?
  • @nogad 不太可能。那将是“身份验证失败”,而不是“权限被拒绝”
  • 我希望我可以,但任务的要求是在 php.ini 中从 SFTP 下载文件。我确实尝试过phpseclib,但速度太慢了。

标签: php curl sftp


【解决方案1】:

根据文档,cURL URL 不包含端口。此外,SFTP 默认为 22,因此在您的示例中它是虚假的。您可以使用:

$remote = "sftp://".$username.":".$password ."@".$host."/home/testfolder/saleskits/".$fn;

【讨论】:

  • 尝试删除端口,但仍然显示权限被拒绝。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-15
  • 1970-01-01
  • 2017-03-27
  • 2012-01-01
  • 2018-01-11
  • 2011-12-23
  • 2016-05-27
相关资源
最近更新 更多