Curl – pobieranie plików z Apache realm

Ostatnio zdarzylo mi się, że pliki które miał pobrać mój skrypt PHP, były umieszczone na serwerze z autentykacją Apache realms.

Skrypt w postaci:

$fp = fopen( $fileName, "w+");
if( $fp ) {
	$ch = curl_init( $url.'?password=mojeHaslo&login=mojLogin' );
	curl_setopt($ch, CURLOPT_FILE, $fp);
	curl_setopt($ch, CURLOPT_HEADER, 0);
 
	curl_exec($ch);
	curl_close($ch);
	fclose($fp);
}

nie zadziała.

Należy dodać do curl 2 opcje, i całość skryptu będzie wyglądać tak:

$fp = fopen( $fileName, "w+");
if( $fp ) {
	$ch = curl_init( $url );
	curl_setopt($ch, CURLOPT_FILE, $fp);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
	curl_setopt($ch, CURLOPT_USERPWD, 'mojLogin: mojeHaslo');
 
	curl_exec($ch);
	curl_close($ch);
	fclose($fp);
}

2 myśli do „Curl – pobieranie plików z Apache realm”

  1. Własnie borykam sie z podobnym zagadnieniem – po pobraniu tego pliku musze go wyslac do przeglądarki tak żeby użytkownik mógł zapisać ten plik na dysku i nie wiem jak to zrobić. Normalnie robiłem to przy pomocy funkcji header() , ale teraz jesli pobrałem plik curlem i mam go w zmiennej to nie wiem co z tym dalej zrobić… Masz może jakiś pomysł lub rozwiązanie?

  2. Skoro wiesz, gdzie zapisujesz pobrany plik (ścieżka i nazwa pliku) to możesz użyć nadal funkcji header() z odpowiednimi parametrami 🙂

Dodaj komentarz

This site uses Akismet to reduce spam. Learn how your comment data is processed.