簡體   English   中英

沒有從cURL得到任何錯誤消息或內容

[英]Not getting any error message or content from cURL

使用下面的代碼,我不會得到任何錯誤或內容。

我對獲取我的網站http://www.aptamitra.in的內容感興趣。

$cookie = tempnam ("/tmp", "CURLCOOKIE");
$ch = curl_init();
//$timeout = 5;
curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
curl_setopt( $ch, CURLOPT_URL, "http://www.aptamitra.in" );
curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $ch, CURLOPT_ENCODING, "" );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );    # required for https urls
//curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
//curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout );
//curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
$content = curl_exec( $ch );
$response = curl_getinfo( $ch );
var_dump($content);
echo "<pre>";
print_r($response);  // iam getting response here.
curl_close ( $ch );

我使用var_dump($content) print_r($response)獲得的數組如下所示

bool(false)

Array
(
    [url] => http://www.aptamitra.in/
    [content_type] => text/html; charset=UTF-8
    [http_code] => 302
    [header_size] => 4956
    [request_size] => 4984
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 20
    [total_time] => 0.452
    [namelookup_time] => 0
    [connect_time] => 0
    [pretransfer_time] => 0
    [size_upload] => 0
    [size_download] => 0
    [speed_download] => 0
    [speed_upload] => 0
    [download_content_length] => 0
    [upload_content_length] => -1
    [starttransfer_time] => 0.124
    [redirect_time] => 0.328
    [redirect_url] => 
    [primary_ip] => 127.0.0.1
    [certinfo] => Array
        (
        )

    [primary_port] => 1080
    [local_ip] => 127.0.0.1
    [local_port] => 52230
)

我不知道為什么沒有內容。

根據curl_exec()文檔:

成功返回TRUE,失敗返回FALSE。 但是,如果設置了CURLOPT_RETURNTRANSFER選項,則成功時將返回結果,失敗時將返回FALSE。

您對var_dump($content);調用 顯示bool(false) ,這意味着curl_exec()失敗。 這就是為什么您沒有得到任何響應內容的原因。 使用curl_errno()和/或curl_error()找出失敗的原因。

我注意到的一件事是curl_getinfo()正在報告[redirect_count] => 20 這是很多重定向。 服務器可能會陷入無限的重定向循環,而curl_exec()決定在一段時間后失敗。 參見CURLOPT_MAXREDIRS 檢查報告的錯誤號是否為CURLE_TOO_MANY_REDIRECTS

希望這有效

 $options = array(
  CURLOPT_CUSTOMREQUEST  =>"GET",        //set request type post or get
  CURLOPT_POST           =>false,        //set to GET
  CURLOPT_USERAGENT      => 'Mozilla/5.0 (Windows NT 6.1; rv:48.0) Gecko/20100101 Firefox/48.0', //set user agent
  CURLOPT_RETURNTRANSFER => true,     // return web page
  CURLOPT_HEADER         => false,    // don't return headers
  CURLOPT_FOLLOWLOCATION => true,     // follow redirects
  CURLOPT_ENCODING       => "",       // handle all encodings
  CURLOPT_AUTOREFERER    => true,     // set referer on redirect
  CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
  CURLOPT_TIMEOUT        => 120,      // timeout on response
  CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
);

$ch      = curl_init("http://www.aptamitra.in/");
curl_setopt_array( $ch, $options );    
echo curl_exec( $ch );    
curl_close( $ch );

使用以下命令,我可以打印頁面內容。

function mmcurl( $url=NULL, $data=array(), $options=NULL ){

    /* Download cacert.pem and change path here to suit */
    $cacert='c:/wwwroot/cacert.pem';
    $cookiejar=tempnam( sys_get_temp_dir(), '_cookiejar_' );                    


    $curl=curl_init();
    if( parse_url( $url,PHP_URL_SCHEME )=='https' ){
        curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );
        curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, 2 );
        curl_setopt( $curl, CURLOPT_CAINFO, realpath( $cacert ) );
    }
    curl_setopt( $curl, CURLOPT_URL,trim( $url ) );
    curl_setopt( $curl, CURLOPT_AUTOREFERER, TRUE );
    curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, TRUE );
    curl_setopt( $curl, CURLOPT_FRESH_CONNECT, TRUE );
    curl_setopt( $curl, CURLOPT_HEADER, FALSE );
    curl_setopt( $curl, CURLOPT_RETURNTRANSFER, TRUE );
    curl_setopt( $curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0' );
    curl_setopt( $curl, CURLOPT_ENCODING, '' );

    if( $options->cookie ){
        curl_setopt( $curl, CURLOPT_COOKIEFILE, $cookiejar );
        curl_setopt( $curl, CURLOPT_COOKIEJAR, $cookiejar );
        curl_setopt( $curl, CURLOPT_COOKIE, $cookiejar );
    }
    if( $options->post ){
        curl_setopt( $curl, CURLOPT_POST, true );
        curl_setopt( $curl, CURLOPT_POSTFIELDS, http_build_query( $data ) );
    }
    $res=(object)array(
        'response'  =>  curl_exec( $curl ),
        'info'      =>  curl_getinfo( $curl ),
        'errors'    =>  curl_error( $curl ),
        'cookie'    =>  $cookiejar
    );
    curl_close( $curl );
    return $res;
}



$url='http://www.aptamitra.in';
$data=array();
$options=new StdClass;
$options->post=false;
$options->cookie=true;


$res=mmcurl( $url, $data, $options );
echo '<pre>',print_r($res,true),'</pre>';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM