当我使用CURL将文件上传到Mediafire Hosting时,我在Ubuntu,CentOs上收到“来自服务器的空回复” 但是使用相同的代码,我可以在Windows上上传该文件。 Linux与Linux的区别是什么?我该如何解决这个问题?
答案 0 :(得分:1)
我遇到了这个问题,最后发现它是由办公室网络防火墙策略引起的;
我编译了各种版本的Curl和OpenSSL,但是它始终是窗口机器可以正常使用的,并且Linux环境中的两个设备不能上传文件,而JSON和下载文件可以正常工作;终于发现是办公室网络的防火墙策略导致我的窗口计算机已通过网络认证并具有较高的权限。但是,Linux的这两种设备的网络权限有限,不能上传文件,但是可以使用JSON和下载文件。
由于是测试环境,LINUX通过窗口上的TCP端口映射成功上传了文件;
答案 1 :(得分:0)
尝试更改用户代理以查看是否有所作为。例如:
curl --user-agent "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24"
答案 2 :(得分:0)
在CURL_FILE之前使用ReturnTransfer
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。 很奇怪><