【问题标题】:How to make curl command into php?如何将curl命令变成php?
【发布时间】:2017-07-27 07:51:41
【问题描述】:

我有这个 curl 命令

curl -L -O -o ' .$path.' -J "https://drive.google.com/uc?export=download&id='.$id.'"

牢记所有标志,我如何将其转换为 php curl 请求。 php中的等价物是什么

这是我目前所拥有的

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://drive.google.com/uc?export=download&id='.$id.'");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}

【问题讨论】:

  • 你得到的有什么问题?您已经通过设置CURLOPT_FOLLOWLOCATION 覆盖了-L 标志。其他标志完全不相关,因为它们让 curl 知道如何处理响应(将其保存到文件等),而您在 PHP 中不会这样做。只取结果,然后做你想做的事。

标签: php curl php-curl


【解决方案1】:

主要是缺少保存操作(-o $path):

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://drive.google.com/uc?export=download&id='.$id.'");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}

file_put_contents($path, $result);
?>

【讨论】:

  • 重定向标志怎么样,当我检索文件时它说 404,我只需要了解这些确切标志的 php 等效项
  • 404 = 未找到。重定向 http 标头在 300 范围内
【解决方案2】:
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://drive.google.com/uc?export=download&id=123"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close ($ch);

【讨论】:

  • 为什么要使用 URL 作为$_ENV 的键?
  • 上传后如何将该文件移动到另一个位置?
  • 结果文件是否在 $result 变量中?
  • 您可以使用 file_put_contents 移动它。结果将在 $result
  • 让 curl 忽略证书是否明智?如果所有其他尝试检索您的 url 由于证书而失败,那应该是最后一个选项。设置
猜你喜欢
  • 2017-06-10
  • 1970-01-01
  • 2017-12-20
  • 2012-05-10
  • 2019-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多