cURL在不同服务器上的表现不同

时间:2011-09-16 02:45:59

标签: php curl

我正在尝试使用cURL从外部服务器下载图像。此代码适用于我的本地Windows XAMPP安装:

$ch = curl_init("http://some.server.com/some-image.jpg");
$fp = fopen("testimage.jpg", 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
curl_close($ch);
fclose($fp);

但是,当我使用完全相同的代码并在我的生产服务器上运行它时,图像无法成功下载。 testimage.jpg被创建,但文件大小为0。对curl_errno的调用返回0.是否有任何系统设置会影响cURL的运行方式?

对于记录,我使用的URL确实会导致重定向。当我将URL输入浏览器时,显示图像时,地址栏中会出现另一个不同的URL。但是,我的印象是CURLOPT_FOLLOWLOCATION只是跟踪重定向所需要的,特别是因为这是我在本地工作所需的全部内容。我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

首先确保通过添加以下内容明确地调出显示错误和error_reporting:

ini_set('display_errors', 'on');
error_reporting(E_ALL);

同时检查防火墙设置以确保可以成功发送请求。

答案 1 :(得分:1)

有一个名为verbose的curl设置,

curl_setopt( $ch, CURLOPT_VERBOSE, true );

我发现这在这种情况下非常有用。它将打印出curl所做的一切以及遇到的任何HTTP代码。设置此项并让我们知道您遇到的错误。

祝你好运。