php cURL function 301 error php cURL function 301 error curl curl

php cURL function 301 error


CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set

You may try this:

Solution 1:

Set safe_mode = Off in your php.ini file (it's usually in /etc/ on the server). If that's already off, then look around for the open_basedir stuff in the php.ini file and comment that line (#open_basedir...). Restart apache server.

Solution 2:
If the above doesn't work (it should!) try this:

<?phpfunction geturl($url){(function_exists('curl_init')) ? '' : die('cURL Must be installed for geturl function to work. Ask your host to enable it or uncomment extension=php_curl.dll in php.ini');    $cookie = tempnam ("/tmp", "CURLCOOKIE");    $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; CrawlBot/1.0.0)');    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);    curl_setopt($ch, CURLOPT_HEADER, true);    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , 5);    curl_setopt($ch, CURLOPT_TIMEOUT, 5);    //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);    curl_setopt($ch, CURLOPT_ENCODING, "");    curl_setopt($ch, CURLOPT_AUTOREFERER, true);    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);    # required for https urls    curl_setopt($ch, CURLOPT_MAXREDIRS, 15);     $html = curl_exec($curl);$status = curl_getinfo($curl);curl_close($curl);if($status['http_code']!=200){    if($status['http_code'] == 301 || $status['http_code'] == 302) {        list($header) = explode("\r\n\r\n", $html, 2);        $matches = array();        preg_match("/(Location:|URI:)[^(\n)]*/", $header, $matches);        $url = trim(str_replace($matches[1],"",$matches[0]));        $url_parsed = parse_url($url);        return (isset($url_parsed))? geturl($url):'';    }}return $html;}?>


You might need to enable follow redirects using the location header flag:

curl -L <URL>