【发布时间】:2021-02-04 14:17:25
【问题描述】:
我在这里和那里挑选了一些代码,以确保我可以从 sFtp 服务器直接在浏览器中下载文件。
当我在本地运行脚本时,它运行良好,它下载文件就好了。当我将它上传到我的 ubuntu 20.04 服务器并转到浏览器中的 url 时。得到通知他要下载。只有文件只有0字节。
脚本:
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"demo.pdf\"");
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "sftp://".$host."/demo.pdf");
curl_setopt($curl, CURLOPT_PROTOCOLS, CURLPROTO_SFTP);
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");
curl_exec($curl);
curl_close($curl);
Curl PHP 扩展已安装在服务器上。
(编辑)修复(我认为):
当我添加以下行时。它会起作用的:
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
【问题讨论】:
-
你尝试过什么调试问题?
-
你需要检查
curl_error()的输出 -
@Nico Haase:添加 curl_error() 检查。但它不会给出任何输出。直接在服务器上测试 curl 可能有我不知道的防火墙问题。但这很有效。
-
所以尝试其他方法来调试问题。例如,设置
CURLOPT_RETURNTRANSFER并调用curl_getinfo()。 -
@Martin Prikryl 感谢您的回复。我检查 curl_getinfo('request_header') 和其他参数,但我在 http_code 处只得到一个 0。