Search code examples
phpfile-get-contentsfile-put-contents

file_get_contents, failed to open stream: Redirection limit reached


My codes is :

    if ( isset($_POST['gd_url']) && isset($_POST['accessToken'])) {
    $url = "https://drive.google.com/uc?export=download&id=".$fileId;
    // $url = $_POST['gd_url'];
    $name = $_POST['file'];
    $accessToken = $_POST['accessToken'];
    $opts = array(

            'http'=>array(
            'method'=>"GET",
            'header' => "Authorization: Bearer " . $accessToken                 
            )
    );
    $context = stream_context_create($opts);

    $content = file_get_contents($url, false, $context);
    // echo $content;
    if (!empty($content)){

        file_put_contents($_SERVER['DOCUMENT_ROOT'].'/UPDRIVE/'.$name,$content);
    }
}

i try to add 'follow_location' => false and 'max_redirects' => 101 but the same result

error :

Warning: file_get_contents(https://drive.google.com/uc?export=download&id=0B6ijT2xI7CfebEt3d3g1dndtZlU): failed to open stream: Redirection limit reached, aborting in /.../uploadMediasSupdrive.php on line 24

if i change the ligne

$content = file_get_contents($url, false, $context);

to

$content = file_get_contents($url);

this work only with *.jpg file

Thank you


Solution

  • $param = $_REQUEST;
    $oAuthToken = $param['oAuthToken'];
    $fileId = $param['fileId'];
    $getUrl = 'https://www.googleapis.com/drive/v2/files/' . $fileId . '?alt=media';
    $authHeader = 'Authorization: Bearer ' . $oAuthToken;
    ini_set('memory_limit', '512M');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, $getUrl);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        $authHeader
    ));
    
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    $data = curl_exec($ch);
    $error = curl_error($ch);
    curl_close($ch);
    
    file_put_contents($param['name'], $data);
    

    this is the solution i found