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 接続にのみ適用されることです。そのため、プロキシで認証するには、コンテキストが FTP で使用できるようになる前に、まず HTTP からファイルを取得する必要があります。

<?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 に答える