2016-11-12 5 views
0

Уже задано here, но искатель не дал достаточно связанных журналов и кода, поэтому я не мог использовать его для исправления моей проблемы. В файле cookie нет амперсанда (&), поэтому это, безусловно, не проблема.CURL работает в командной строке, но не в PHP-скрипте

Таким образом, я могу успешно открыть веб-страницу с помощью локон в командной строке, используя эту строку команды:

curl "https://feinternational.com/buy-a-website/9671-affiliate-e-commerce-survival-and-emergency-preparedness-34k-gross-mo" -H "cookie: wpfront-notification-bar-landingpage=1; gsScrollPos=; PHPSESSID=qhdkf5id0mnjcjadeuadsfkfp3; _gat=1; arp_scroll_position=877; _drip_client_1350063=vid^%^253D57a7eb508b0f013477ed126e9005972f^%^2526pageViews^%^253D8^%^2526sessionPageCount^%^253D2^%^2526lastVisitedAt^%^253D1478973050670^%^2526weeklySessionCount^%^253D2^%^2526lastSessionAt^%^253D1478972975034^%^2526form^%^255B2550^%^255D^%^255Bauto_open^%^255D^%^253D1478960007^%^2526form^%^255B2550^%^255D^%^255Bmanual_close^%^255D^%^253D1478960015; _ga=GA1.2.660807988.1478959677" 

Но мой PHP скрипт, который должен работать точно так же, не работает. Я попытался добавить cookie в заголовок, а также сразу добавить файл cookie, но все равно.

function request($url) { 
    $ch = curl_init(); 
    //curl_setopt($ch, CURLOPT_TIMEOUT_MS, 2000); 
    curl_setopt_array($ch, array(
     CURLOPT_URL => $url, 
     CURLOPT_SSL_VERIFYPEER  => 0, 
     CURLOPT_RETURNTRANSFER  => 1, 
     CURLOPT_CONNECTTIMEOUT  => 10, 
     CURLOPT_TIMEOUT    => 10, 
     CURLOPT_ENCODING   => "gzip", 
     CURLOPT_FOLLOWLOCATION  => TRUE, 
     CURLOPT_HEADER    => TRUE, 
     CURLOPT_USERAGENT   => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36", 
     CURLOPT_HTTPHEADER   => array("cookie: wpfront-notification-bar-landingpage=1; gsScrollPos=; PHPSESSID=qhdkf5id0mnjcjadeuadsfkfp3; _gat=1; arp_scroll_position=877; _drip_client_1350063=vid^%^253D57a7eb508b0f013477ed126e9005972f^%^2526pageViews^%^253D8^%^2526sessionPageCount^%^253D2^%^2526lastVisitedAt^%^253D1478973050670^%^2526weeklySessionCount^%^253D2^%^2526lastSessionAt^%^253D1478972975034^%^2526form^%^255B2550^%^255D^%^255Bauto_open^%^255D^%^253D1478960007^%^2526form^%^255B2550^%^255D^%^255Bmanual_close^%^255D^%^253D1478960015; _ga=GA1.2.660807988.1478959677"), 
     CURLOPT_VERBOSE    => 1, 
    )); 
    $response = curl_exec($ch); 
    $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); 
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    $header = substr($response, 0, $header_size); 
    $html = substr($response, $header_size); 

    echo $html; 

    libxml_use_internal_errors(TRUE); 
    $dom = new DOMDocument(); 
    if (strpos($url, 'feed') !== false) { 
     $dom->loadXML($html); 
    } else { 
     $dom->loadHtml($html); 
    } 
    return new DOMXPath($dom); 
    libxml_clear_errors(); // to clear memory up 
} 

request("http://feinternational.com/buy-a-website/9671-affiliate-e-commerce-survival-and-emergency-preparedness-34k-gross-mo"); 

Как я могу успешно запустить этот завиток через PHP-скрипт? Почему он работает в командной строке, но не в PHP-скрипте? Есть ли что-то, что я делаю неправильно?

Любая помощь будет оценена по достоинству.

+0

Может быть любое количество причин, можете ли вы предоставить более подробную информацию о характере проблемы - какая строка уже показывает проблемы? любой код ошибки возвращен? и т.п. – Amnon

ответ

0

Я решаю его, используя вместо этого shell_exec().

echo shell_exec("curl https://feinternational.com/buy-a-website/9671-affiliate-e-commerce-survival-and-emergency-preparedness-34k-gross-mo"); 

Кажется, есть ошибка с завитком библиотеки в сочетании с ошибкой в ​​странице сайта. Ошибка не такая последовательная. Иногда для зависания командной строки требуются файлы cookie, но в основном нет.

Ну, у меня нет времени отлаживать завиток, поэтому, если shell_exec() работает, я в порядке с ним. Это даже становится намного проще.

Смежные вопросы