8

谁能给我任何解释为什么私有 bitbucket 存储库的授权功能在我的本地机器上运行(运行 PHP 版本 5.3.17)但没有在我的远程服务器上授权(运行 PHP 版本 5.3.20)

我本身并没有收到错误——我只是收到来自 bitbucket 的“禁止”响应。但是从我的本地服务器运行一切都很好。

function bitBucketConnect($url){
    global $bitPassword;
    global $bitUsername;
    $context = stream_context_create(array(
     'http' => array(
       'header' => "Authorization: Basic " . base64_encode("$bitUsername:$bitPassword")
       )
    ));

 // Make the request
 return file_get_contents($url, false, $context);
 }
4

1 回答 1

12

您的代理将响应需要身份验证。您可能会挠头并认为“但我正在提供身份验证!”

问题是“标头”值仅适用于 http 连接。因此,要在代理上进行身份验证,您首先必须从 HTTP 中提取文件,然后上下文才能在 FTP 上使用。

<?php 
$opts = array('ftp' => array( 
    'proxy' => 'tcp://vbinprst10:8080', 
    'request_fulluri'=>true, 
    'header' => array( 
        "Proxy-Authorization: Basic $auth" 
        ) 
    ), 
    'http' => array( 
    'proxy' => 'tcp://vbinprst10:8080', 
    'request_fulluri'=>true, 
    'header' => array( 
        "Proxy-Authorization: Basic $auth" 
        ) 
    ) 
); 
$context = stream_context_create($opts); 
$s = file_get_contents("http://www.example.com",false,$context); 
$s = file_get_contents("ftp://anonymous:anonymous@ftp.example.org",false,$context); 
?> 
于 2013-02-08T13:57:15.533 回答