0
        $url=download.piriform.com/ccsetup524.exe

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        // don't download content
        curl_setopt($ch, CURLOPT_NOBODY, 1);
        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        if(curl_exec($ch) !== FALSE)
        {
            return true;
        }
        else
        {
            return false;
        }

これは正常に動作します - trueを返します(リンクがダウンロード可能であることを意味します)。

しかし、URLに次のような拡張子がない場合

$url=https://drive.google.com/open?id=0B5a6JxhqgyoIdGFVeXFKSGZsd0E

動作していません。常にfalseを返します(リンクがダウンロードできないことを意味します)。

4

2 に答える 2

0

curlの証明書はおそらく古くなっています。2 番目のリンクが であるため、機能していませんhttps。簡単に修正するには、次を追加します。

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

適切な修正を行うには、最新の証明書バンドルをダウンロードし、それを使用するように php 構成を設定する必要があります。これに関するチュートリアルは次のとおりです。

https://snippets.webaware.com.au/howto/stop-turning-off-curlopt_ssl_verifypeer-and-fix-your-php-config/

于 2016-12-12T14:34:39.237 に答える
0

あなたはいくつかの奇妙な仮定をしています:

これは正常に動作します - true を返します (リンクがダウンロード可能であることを意味します)。

常に false を返します (リンクがダウンロードできないことを意味します)。

docsの戻り値はcurl_exec()失敗false時 (あらゆる種類の失敗) であると説明されており、何が問題なのかを調べるためにcurl_error()があります。推測する必要はありません!

于 2016-12-12T16:56:10.260 に答える