设置为true的CURLOPT_RETURNTRANSFER无法在托管服务器上运行

时间:2012-09-04 19:15:58

标签: php curl

我正在尝试处理来自$data = curl_exec($ch);的结果,而不是在屏幕上打印它。为了实现这一点,我将选项CURLOPT_RETURNTRANSFER设置为true,如下所示:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

在我的本地服务器上,这可以按预期工作,但是当我在服务器上将相同的文件放在网上时,它不起作用。

当我将CURLOPT_RETURNTRANSFER设置为false时,它可以正常工作。

我做错了什么?

3 个答案:

答案 0 :(得分:20)

如果您将CURLOPT_RETURNTRANSFER设置为true1,则curl_exec的返回值将是成功操作的实际结果。换句话说,它不会在成功时返回TRUE。虽然它会在失败时返回FALSE

curl-exec PHP手册页的“返回值”部分所述:http://php.net/manual/function.curl-exec.php

您应该为重定向启用CURLOPT_FOLLOWLOCATION选项,但如果您的服务器位于safe_mode且/或open_basedir生效,这可能会导致卷曲问题,这将是一个问题

答案 1 :(得分:0)

如果它在您的本地环境中运行良好,则可能是服务器已在您为cURL设置的目标URL上阻止了远程服务器的IP。 您需要验证是否允许您的远程服务器访问为 CURLOPT_URL 设置的URL。

答案 2 :(得分:-2)

试试这一行:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

后:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);