【问题标题】:Curl works on CLI, but not on PHPCurl 适用于 CLI,但不适用于 PHP
【发布时间】:2015-02-26 18:30:22
【问题描述】:

所以,我在 CLI 上尝试了这个 cURL,它可以工作,但在我的 PHP 脚本上却不行。 在我的 PHP 脚本中,它显示 {"staff":[],"reserved":[],"types":[]} 当 json 应该包含更具体的数据时。当我使用 cURL 和使用 file_get_contents 时都会发生这种情况。 当我通过浏览器打开它时,它也不起作用。它显示为空白。

请注意:我已经在 PHP 上使用 curl 创建了数百次网络爬虫,并且通常效果很好。

这是我在 CLI 上使用的 cURL:

curl "https://foodandfarmtour.theflybook.com/api/engine/_reservations/?id=FA860873-B947-4647-BF8C-2062628E09F9&from=2015-02-01&to=2015-03-05" -H "Cookie: PHPSESSID=f1dotub17jua33qhnoat71ddc5; fbe_aid=FA860873-B947-4647-BF8C-2062628E09F9; br_dft=m"%"2Fd"%"2FY" -H "Accept-Encoding: gzip, deflate, sdch" -H "Accept-Language: en-US,en;q=0.8,id;q=0.6,ms;q=0.4,jv;q=0.2" -H "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36" -H "Accept: */*" -H "Referer: https://foodandfarmtour.theflybook.com/book/trip/fb/?id=9932552A-8FF9-4A22-827F-3AAD4F909625" -H "X-Requested-With: XMLHttpRequest" -H "Connection: keep-alive" --compressed -k

这是我使用的 PHP 脚本:

$id = $args[0];
$start = date('Y-m-01');
$ch = curl_init('https://foodandfarmtour.theflybook.com/api/engine/_reservations/?id='.$id.'&from='.
        $start.'&to='.date('Y-m-d', strtotime($start.' +32 days')));
var_dump('https://foodandfarmtour.theflybook.com/api/engine/_reservations/?id='.$id.'&from='.
        $start.'&to='.date('Y-m-d', strtotime($start.' +32 days')));

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            "Accept: */*",
            // "Accept-Encoding:gzip, deflate, sdch",
            "Accept-Language:en-US,en;q=0.8,id;q=0.6,ms;q=0.4,jv;q=0.2",
            "Connection: keep-alive",
            "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36",
            "X-Requested-With: XMLHttpRequest",
            "Host: foodandfarmtour.theflybook.com",
            "Referer: https://foodandfarmtour.theflybook.com/book/trip/fb/?id=9932552A-8FF9-4A22-827F-3AAD4F909625",
            "Cookie: PHPSESSID=f1dotub17jua33qhnoat71ddc5; fbe_aid=FA860873-B947-4647-BF8C-2062628E09F9; br_dft=m%2Fd%2FY"));

var_dump(curl_exec($ch));
return;

【问题讨论】:

    标签: php json curl


    【解决方案1】:

    您使用的是 debian 还是 ubuntu?输入这个:

    # apt-get install php5-curl
    

    如果您使用 RedHat/Fedora/CentOS,您必须输入:

    # yum install php-curl
    

    最好的问候!

    【讨论】:

    • 没有。我使用的是 Windows 7。我已经为 php 安装了 curl,不过还是谢谢 :)
    • 看看 xampp、wampp 和另一个 WAMP(Windows Apache2 MySQL 和 PHP)服务器,它们是预先打包和预配置的 :) apachefriends.org/es/index.htmlwampserver.com/en 例如。
    • 实际上,我使用 cURL PHP 脚本已经很长时间了,而且我的其他脚本总是可以工作,所以这不是问题 :) 我应该在问题中说出来。我会编辑它。
    【解决方案2】:

    当您的网络服务器的 php.ini 文件中未启用 CURL 时会发生这种情况。

    在从 web 服务器运行的 PHP 脚本中使用 CURL 函数之前,只需验证是否在 web 服务器的 php ini 中启用了 CURL 扩展。

    你可以通过执行<?php phpinfo(); ?>来检查这个

    【讨论】:

    • 实际上,我使用 cURL PHP 脚本已经很长时间了,而且我的其他脚本总是可以工作,所以这不是问题 :) 我应该在问题中说出来。我会编辑它。
    【解决方案3】:

    原来我输入了一个错误的链接到我的 PHP cURL 刮板。这与我在 CLI 中输入的 URL 不同。对不起大家。感谢您尝试回答!

    【讨论】:

      猜你喜欢
      • 2011-09-09
      • 2015-01-21
      • 2017-03-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多