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一起使用。