【问题标题】:download git repo using php使用 php 下载 git repo
【发布时间】:2019-05-10 14:43:32
【问题描述】:

在用户执行操作之后,我想从 github 下载存储库文件。该代码将无法按预期工作。代码运行时会创建一个.zip 文件,但生成的 zip 文件是空白的。我该如何解决这个问题?

$url = "https://github.com/$u/$repo/archive/master.zip";
$ch = curl_init();
    $f = fopen(__DIR__.'/master.zip', 'w+');
    $opt = [
        CURLOPT_URL => $url,
        CURLOPT_FILE => $f,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_BINARYTRANSFER => true,
        CURLOPT_HEADER => false,
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_SSL_VERIFYPEER => false,
    ];
    curl_setopt_array($ch, $opt);
    $file = curl_exec($ch);

    curl_close($ch);
    fclose($f);

【问题讨论】:

    标签: php curl github download


    【解决方案1】:

    从您的代码中删除 CURLOPT_RETURNTRANSFER => true 或将其放在 CURLOPT_FILE 之前。

    这是known interaction,因为CURLOPT_FILE 取决于CURLOPT_RETURNTRANSFER 的设置。

    【讨论】:

    • 我试过了,但它会继续生成一个空白的 zip 文件(0 字节尺寸)。这是不是因为curl没有完成下载造成的?
    • @user10479680 为什么你认为它不是 curl 下载的?您的存储库是私有的吗?
    • 因为我已经将curl_error() 函数添加到我的代码中,它会输出此错误消息error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
    • 可能与this SO question有关。尝试检查您的 curl 和 openSSL 版本,并在必要时进行更新。
    猜你喜欢
    • 2023-04-04
    • 2012-10-08
    • 2013-11-18
    • 2012-02-14
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多