Curl适用于CLI,但不适用于PHP

时间:2015-02-26 18:30:23

标签: php json curl

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

请注意:我已经在PHP上创建了数百次卷曲的网络刮刀,通常效果很好。

这是我在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;

3 个答案:

答案 0 :(得分:0)

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

# apt-get install php5-curl

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

# yum install php-curl

祝你好运!

答案 1 :(得分:0)

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

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

您可以执行<?php phpinfo(); ?>

进行检查

答案 2 :(得分:0)

事实证明我输入了一个错误的链接到我的PHP cURL scraper。它与我在CLI中输入的URL不同。对不起大家。谢谢你试着回答!