如果CURLOPT_RETURNTRANSFER设置为true,则cURL PHP无效

时间:2014-07-24 02:23:21

标签: php curl

我尝试通过cURL for PHP提取网站的HTML。通常它工作正常,但有一些网站的响应是空的。例如,如果我为URL alditalk.de执行以下脚本:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.alditalk.de/');
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/4");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
$data = curl_exec($ch);
curl_close($ch);

在这种情况下,变量$data为空。奇怪的是,如果我将curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);更改为curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);,网站将打印在屏幕上。问题是,我需要变量中的内容以进行进一步的操作。

我在WAMPP本地尝试了我的Hoster。我也尝试设置一些标题信息但没有成功。也没有错误。有没有解决方案?

3 个答案:

答案 0 :(得分:0)

它为我工作。我认为你没有启用卷曲扩展。

由于您正在使用XAMPP,请取消注释该行

;extension=php_curl.dll

xampp\apache\bin\php.ini中,然后重新启动Apache服务。

注意:在较新的XAMPP版本中,PHP已移至root xampp文件夹xampp\php\php.ini


WAMP SERVER

中的步骤

步骤如下:

  1. 关闭WAMP(如果正在运行)
  2. 导航至WAMP\bin\php\(your version of php)\
  3. 修改php.ini
  4. 搜索curl,取消注释extension=php_curl.dll
  5. 导航至WAMP\bin\Apache\(your version of apache)\bin\
  6. 修改php.ini
  7. 搜索curl,取消注释extension=php_curl.dll
  8. 保存两者
  9. 重启WAMP

答案 1 :(得分:0)

它的工作正常对我..我认为卷曲扩展没有很好启用..你使用xampp ??

Go to http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/ 

并下载与php版本相同的curl版本。

答案 2 :(得分:0)

这并没有直接回答您的问题,但它提供了一些解决方法:您是否可以考虑使用ob_start()和相关函数来捕获 能够获得的输出?

当然,上面的想法是解决它的一种黑客方式。在回到ob_start()之前,我建议仔细检查所有变量名称,ini设置等,因为你总是可以做一些事情,比如意外地尝试访问$ daya的内容而不是$ data - 这正是我在自己的剧本中花了45分钟的错字。修复我的变量名称修复了最初引发我这个问题的错误行为。

希望能有所帮助。干杯!

相关问题