繁体   English   中英

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

[英]cURL PHP not working if CURLOPT_RETURNTRANSFER set true

我尝试通过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); to curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); 该网站将打印在屏幕上。 问题是,我需要变量中的内容以进行进一步的操作。

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

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

由于您正在使用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

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

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

并下载与您的php版本相同的curl版本..

这并不直接回答你的问题,但它提供了一个位的一种解决方法:你可以考虑使用ob_start()和相关功能,以捕获能得到的输出?

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

希望有助于某人。 干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM