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


Curl works on CLI, but not on PHP

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

请注意:我已经在PHP上用curl创建了数百次web scraper,通常它工作得很好。

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

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

# apt-get install php5-curl

如果您使用RedHat/Fedoa/CentOS,则必须键入:

# yum install php-curl

致以最良好的问候!

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

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

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

来检查这一点

原来我输入了一个错误的链接到我的PHP cURL scraper。这与我在CLI中输入的URL不同。对不起,伙计们。谢谢你的回答!

相关文章: