PHP从URL保存远程图像(SSL) - 使用Quirk

时间:2016-10-14 04:45:35

标签: php

SO, 我在搜索!但我有一个奇怪的问题,我没有看到解决。

我有一个使用SSL的SharePoint网站,其中包含我想从我的PHP页面下载的图片。我有有效的凭据来对SharePoint站点进行身份验证(单点登录)。

我能够直接导航到图像文件网址,并且可以正常加载图像(并且不需要身份验证)。

当我在PHP中尝试任何可用的文件保存选项时,没有任何作用。我最近得到的是一个大小为0KB的jpg文件。

我不明白为什么它允许我在浏览器中直接导航图像,但是我无法在本地下载该图像的脚本。

编辑:

function get_web_page( $url )
{
    $options = array(
        CURLOPT_RETURNTRANSFER => true,     // return web page
        CURLOPT_HEADER         => false,    // don't return headers
        CURLOPT_FOLLOWLOCATION => true,     // follow redirects
        CURLOPT_ENCODING       => "",       // handle all encodings
        CURLOPT_USERAGENT      => "spider", // who am i
        CURLOPT_AUTOREFERER    => true,     // set referer on redirect
        CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
        CURLOPT_TIMEOUT        => 120,      // timeout on response
        CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
        CURLOPT_SSL_VERIFYPEER => false     // Disabled SSL Cert checks
    );

    $ch      = curl_init( $url );
    curl_setopt_array( $ch, $options );
    $content = curl_exec( $ch );
    $err     = curl_errno( $ch );
    $errmsg  = curl_error( $ch );
    $header  = curl_getinfo( $ch );
    curl_close( $ch );

    $header['errno']   = $err;
    $header['errmsg']  = $errmsg;
    $header['content'] = $content;
    return $header;
}

$out = get_web_page("https://myfakeurl/65980014247151/65980014247151.jpg");

print_r($out);

输出是:

Array
(
    [url] => https://myfakeurl/65980014247151/65980014247151.jpg
    [content_type] => 
    [http_code] => 401
    [header_size] => 287
    [request_size] => 179
    [filetime] => -1
    [ssl_verify_result] => 20
    [redirect_count] => 0
    [total_time] => 0.031
    [namelookup_time] => 0
    [connect_time] => 0.015
    [pretransfer_time] => 0.015
    [size_upload] => 0
    [size_download] => 0
    [speed_download] => 0
    [speed_upload] => 0
    [download_content_length] => 0
    [upload_content_length] => 0
    [starttransfer_time] => 0.031
    [redirect_time] => 0
    [certinfo] => Array
        (
        )

    [errno] => 0
    [errmsg] => 
    [content] => 
)

401 Unauthorized的回复让我觉得它需要我验证一些方法,但我不知道如何。我想在浏览器中直接加载页面可以通过单点登录进行,但是这不能与cURL一起使用。

0 个答案:

没有答案