PHP сохранить удаленное изображение из URL (SSL) — с причудой

#php

#php

Вопрос:

ИТАК, я СДЕЛАЛ поиск! Но у меня возникла странная проблема, которую я не видел решаемой.

У меня есть сайт SharePoint, использующий SSL, на котором есть изображения, которые я хотел бы загрузить со своей страницы PHP. У меня есть действительные учетные данные для аутентификации на сайте SharePoint (также единый вход).

Я могу напрямую перейти к URL-адресу файла изображения, и он нормально загружает изображение (и аутентификация не запрашивается).

Когда я пробую любой из доступных вариантов сохранения файлов в PHP, ничего не работает. Ближайший, который я получил, — это файл jpg, созданный размером 0 КБ.

Я не понимаю, почему это позволяет мне загружать изображение в браузере напрямую, но я не могу получить скрипт для локальной загрузки этого изображения.

Редактировать:

 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 заставляет меня думать, что он хочет, чтобы я каким-то образом аутентифицировался, но я не знаю как. Я предполагаю, что загрузка страницы непосредственно в браузере работает через единый вход, но это не будет работать с cURL.

Комментарии:

1. возможно, это может помочь?

2. нет кубиков. Я не упоминал, что использую SharePointAPI Thybag для доступа к сайту и извлечения URL-адресов изображений из списка библиотеки документов. Это работает идеально. Я даже могу отображать изображения на странице, используя возвращаемый путь. Где я застрял, я пытаюсь записать этот HTML в скрипт TCPDF, и он, по-видимому, не может получить изображения либо с помощью стандартного html-пути к img, либо с попыткой сначала загрузить файл локально, а затем сослаться на него (с чем я сейчас и играю).).