Warning: file_get_contents: failed to open stream: Redirection limit reached, aborting Warning: file_get_contents: failed to open stream: Redirection limit reached, aborting curl curl

Warning: file_get_contents: failed to open stream: Redirection limit reached, aborting


Had a similar problem today. I was using CURL and it wasn't returning my any error. Tested with file_get_contents() and I got...

failed to open stream: Redirection limit reached, aborting in

Made a few searches and I'v ended with this function that works on my case...

function getPage ($url) {$useragent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36';$timeout= 120;$dir            = dirname(__FILE__);$cookie_file    = $dir . '/cookies/' . md5($_SERVER['REMOTE_ADDR']) . '.txt';$ch = curl_init($url);curl_setopt($ch, CURLOPT_FAILONERROR, true);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);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_CONNECTTIMEOUT, $timeout );curl_setopt($ch, CURLOPT_TIMEOUT, $timeout );curl_setopt($ch, CURLOPT_MAXREDIRS, 10 );curl_setopt($ch, CURLOPT_USERAGENT, $useragent);curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.com/');$content = curl_exec($ch);if(curl_errno($ch)){    echo 'error:' . curl_error($ch);}else{    return $content;        }    curl_close($ch);}

The website was checking for a valid user agent and for cookies.

The cookie issue was causing it! :)Peace!


Resolved with:

<?php$context = stream_context_create(    array(        'http' => array(            'max_redirects' => 101        )    ));$content = file_get_contents('http://example.org/', false, $context);?>

You can also inform if you have a proxy in the middle:

$aContext = array('http'=>array('proxy'=>$proxy,'request_fulluri'=>true));$cxContext = stream_context_create($aContext);

More details on: https://cweiske.de/tagebuch/php-redirection-limit-reached.htm (thanks @jqpATs2w)


Using cURL you would need to have the CURLOPT_RETURNTRANSFER option set to true in order to return the body of the request with call to curl_exec like this:

$url = 'http://www.farmersagent.com/Results.aspx?isa=1&name=A&csz=AL';$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);// you may set this options if you need to follow redirects. Though I didn't get any in your casecurl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);$content = curl_exec($curl);curl_close($curl);$html = str_get_html($content);