上传文件时:curl 仅在 Linux 上返回“来自服务器的空回复”,但 Windows 上


When upload file: Curl return "Empty reply from server" only on Linux but Windows

当我使用 CURL 将文件上传到 Mediafire Hosting 时,我在 Ubuntu、CentOs 上收到"来自服务器的空回复"但是使用相同的代码,我可以在Windows上上传该文件。Linux与Windows有什么区别?我该如何解决这个问题?

我遇到过这个问题,最后发现是办公室网络防火墙策略引起的;

我编译了各种版本的 Curl 和 OpenSSL,但始终是窗口机可以正常使用,Linux 环境中的两个设备无法上传文件,JSON 和下载文件功能正常;最后发现是 Office 网络的防火墙策略导致我的窗口计算机已通过网络认证,具有很高的权限。但是,Linux的两个设备具有有限的网络权限,无法上传文件,但可以使用JSON和下载文件。

因为是测试环境,所以 LINUX 通过窗口上的 TCP 端口映射成功上传文件;

尝试更改用户代理,看看这是否有所作为。 例如:

curl --user-agent "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24"

在CURL_FILE之前使用回转

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FILE, $fp); 

http://www.php.net/manual/en/function.curl-setopt.php#99082

我不知道为什么我在CURLOPT_FILE后使用RETURNTRANSFER,它可以在Windows O_O中工作。即使在Linux中,我也使用与Windows相同的方法,我可以上传到除Mediafire之外的许多主机。很奇怪的><</p>