2017-10-03 5 views
1

とfile_get_contentは、私のようなURLを介して私のスクリプトでパスワード保護されたXMLファイルを取得したいのですが)リダイレクションまたはパスワードプロンプトなしでのURLの:PHPのsimple_load_fileとメールアドレスとパスワード

account%40domain.com:[email protected]/file.xml 

だから私は(simple_load_fileでこのURLを使用してみてください)とのfile_get_contents()が、それは(私は、この関数は、URLに特殊文字が原因でurlencodeを必要と知っている動作しませんでしたaccount%40domain.com:password%40domain2.com/file.xmlは機能しません)。

だから私はstackoverlowで見つかった別の解決策試してください:

$username = '[email protected]'; 
$password = 'password'; 

$context = stream_context_create(array(
    'http' => array(
     'header' => "Authorization: Basic " . base64_encode("$username:$password") 
    ) 
)); 
$data = file_get_contents('domain2.com/file.xml', false, $context); 

をそして、私はエラーを取得:

...failed to open stream: No such file or directory in... 

私もカールしようと、何の成功は、あまりにも(コード302を返されません)。私はこの問題を解決するために考えています。誰でも助けてくれますか?

+1

302は、リダイレクトコードです。あなたは、 eサーバーの応答を受信し、その場所に新しい要求を実行して内容を取得します。 – Calimero

答えて

1

file_get_contentsは自動的にリダイレクト(302など)を行いますが、スキームを提供することでリモートファイルを取得していることを伝える必要があります。あなたがスキームを提供していない場合、それはローカル上のファイルを開こうとします

(//適切な場合またはhttps)を

$data = file_get_contents('http://domain2.com/file.xml', false, $context); 

$data = file_get_contents('domain2.com/file.xml', false, $context); 

を変更つまり、ディレクトリの下にあるfile.xmlというファイルがあります。

+0

ありがとうございました!あなたは正しいのですが、今私は別のエラーがあります: '...ストリームを開けませんでした:リダイレクション限界に達し、中止しました。 –

+0

これは、コードよりもリモートファイルの問題に似ています。実際のURLを知らなくても、言うことは不可能です。 – iainn

+0

プライベートマッサージで実際のURLを送信できますか? –

関連する問題