Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 文件\u获取\u内容,无法打开流:已达到重定向限制_Php_File Get Contents_File Put Contents - Fatal编程技术网

Php 文件\u获取\u内容,无法打开流:已达到重定向限制

Php 文件\u获取\u内容,无法打开流:已达到重定向限制,php,file-get-contents,file-put-contents,Php,File Get Contents,File Put Contents,我的密码是: 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['access

我的密码是:

    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);
    }
}
我想补充一点
'follow_location'=>false
'max_redirects'=>101
但结果相同

错误:

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
如果我改变路线

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

这仅适用于*.jpg文件

多谢各位

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

这是我找到的解决方案

由于其他解决方案对我不起作用,我找到了另一个解决方案。 在$opts数组中,我在“http”下添加了“follow_location”=false

$opts = [
    'http' => [
        'follow_location' => false
    ]
];

这就解决了问题。

我建议添加此HTTP上下文选项
max\u redirects

见:

显然,我只在本地环境中使用它进行快速调试它不是用于生产的

$opts = [
    'http' => [
        'follow_location' => false
    ]
];
$arrContextOptions = array(
    "ssl" => array(
        // skip error "Failed to enable crypto" + "SSL operation failed with code 1."
        "verify_peer" => false,
        "verify_peer_name" => false,
         ),
     // skyp error "failed to open stream: operation failed" + "Redirection limit reached"
     'http' => array(
          'max_redirects' => 101,
          'ignore_errors' => '1'
      ),
           
  );

  $file = file_get_contents($file_url, false, stream_context_create($arrContextOptions));