【问题标题】:CURL PHP Doesnt showing any resultCURL PHP 不显示任何结果
【发布时间】:2015-01-17 15:41:24
【问题描述】:

我想从 Google 获取结果。根据 Google 的 Web API 文档,这是我的代码。

<!DOCTYPE html>
<html>
<head>
    <title>testing</title>
</head>
<body>
    <?php
        $page = 10;
        $query = "Baby";
        $url = "https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=".$query;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)');
        $body = curl_exec($ch);
        curl_close($ch);
        $json = json_decode($body);
        var_dump($json);
        echo $json;
    ?>
</body>
</html>

但是我在页面上没有得到任何东西,也没有错误。谁能帮我弄清楚为什么它不起作用以及如何捕获错误?

【问题讨论】:

  • 你检查过错误日志吗?你检查过你的服务器上安装的 curl 扩展吗?
  • 您必须检查 curl 本身的错误。在关闭句柄之前检查echo curl_error($ch);
  • 预期输出时 PHP 中的空白页,表示查看错误日志。始终在开发和测试代码时,位于脚本顶部 error_reporting(E_ALL); ini_set('display_errors', 1);
  • 或者干脆使用:$json = file_get_contents("ajax.googleapis.com/ajax/services/search/web?v=1.0&q=" . $query );

标签: php curl google-search-api


【解决方案1】:

可能有上千个理由。比如,由于某些服务器配置错误,cURL 无法建立出站连接....

尝试查看页面源代码。它在那里显示&lt;/body&gt; 吗? 如果不是,那么它是一个你看不到的致命错误。显示错误ini_set('display_errors',1) 以查看它们。

使用CURLOPT_VERBOSE 查看发生了什么。请尝试以下操作:

curl_setopt($curlhandle, CURLOPT_VERBOSE, true);
$verbose = fopen('php://temp', 'rw+');
curl_setopt($curlHandle, CURLOPT_STDERR, $verbose);

【讨论】:

    【解决方案2】:

    唯一的错误是你试图回显对象,由 json_decode 返回。

    <b>Catchable fatal error</b>:  Object of class stdClass could not be converted to string in ...
    

    【讨论】:

    • 好吧,我认为,错误不是你要找的:) 你应该自己从 $json 创建输出。它不包含 html 标记,只包含干净的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多