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);