【问题标题】:Why is my curl_init() just dying on me?为什么我的 curl_init() 会死在我身上?
【发布时间】:2011-09-11 13:24:42
【问题描述】:

我在网上找到了一些 PHP 代码,据说它们可以帮助我从我的网站发送一些文本以发布到 Twitter 提要中。

但是,它只是死在 curl_init() 部分。浏览器显示一个空页面(没有任何 HTML 内容),并且代码停止执行。

代码如下:

$url = 'http://twitter.com/statuses/update.xml';
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, "$url");
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$body");
curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);

我正在 Ubuntu 11.04 上进行测试,使用 NetBeans(是的,我知道 Netbeans 是为 Java 调试而设计的,但它是免费的,并且有一个非常好的 PHP 调试插件)和 xdebug。我正在本地 Apache 2.2 服务器上进行测试。

我已经尝试运行调试器来查看它失败的地方,并且当代码到达 curl_init() 部分时,调试器也会退出。它只是退出调试器,如上所述,浏览器只显示一个空白页面。

我需要配置或做些什么来让 curl_init() 真正做事吗?

【问题讨论】:

  • 你检查过 curl 可用吗?
  • 试试这个 $curl_handle = curl_init() or die("DIE !! ");
  • php -m | grep curl检查这个模块的最快方法,如果没有,只需apt-get install php5-curl
  • 你有 PHP 错误报告吗?
  • 顺便说一句 - Twitter 不是正在切换到 oAuth 身份验证吗?如果/当这种情况发生时,这种方法不会被淘汰吗?

标签: php apache twitter curl xdebug


【解决方案1】:

很可能curl 模块未在您的 PHP 设置中安装或启用。您可以通过多种方式对此进行检查:

  • 查看extension_loaded('curl') 是否(如该页面中所述,您可以使用php -m 命令从命令行执行相同操作,但要小心——我已经看到命令行PHP 的安装正在使用与 Apache 模块不同的 php.ini!)
  • 看看function_exists('curl_init')
  • 检查phpinfo()的输出
  • 检查 php.ini

如果curl 没有安装(听起来像),安装它,你的问题就解决了。

【讨论】:

  • 哇...我觉得自己像个白痴。我只是假设 curl 命令是标准 PHP 安装的一部分。我什至不认为它会是一个单独的模块。我安装了它,它工作。哦!谢谢你让我直截了当!
猜你喜欢
  • 1970-01-01
  • 2017-01-05
  • 1970-01-01
  • 2010-09-16
  • 2023-03-18
  • 2012-03-20
  • 2014-12-06
  • 2013-04-01
  • 1970-01-01
相关资源
最近更新 更多