Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: file_get_contents - failed to open stream: Redirection limit reached
Forum PHP.pl > Forum > PHP
grzeee
Witam,
mam problem z pobieraniem danych za pomocą file_get_contents.
Wszystko było ok do puki skrypt nie został przeniesiony na nowy serwer - nazwa.pl

Wyskakuje taki bląd:
file_get_contents(http://XXXXXXX/webdata/jlist/?node=0') [function.file-get-contents]: failed to open stream: Redirection limit reached, aborting in /home/xxxx/ftp/xxxx/test.php on line 11

adres po skopiowaniu, i wpisaniu w przeglądarkę otwiera się normalnie.
allow_url_fopen jest na ON

Ma ktoś pomysł skąd się to bierze questionmark.gif
grzeee
Już próbowałem dodać
'http'=>array('max_redirects' => 99)
za pomocą stream_context_create i dalej dzieje się to samo. No chyba że coś źle wyczytałem z tamtego wątka


Znalazłem roziwązanie mojego problemy, tak dla kogość kto by tego potrzebował:
Trzeba do get_file_contents dodać nagłówki, w moim przypadku wystarczyło User-Agent ustawić na cokolwiek byle było.
  1. $header_opts = array(
  2. 'http'=>array(
  3. 'header'=> "Accept-language: pl,en-us;q=0.7,en;q=0.3\r\n" .
  4. "User-Agent: ".$_SERVER['HTTP_USER_AGENT']."\r\n"
  5. )
  6. );
  7. $context = stream_context_create($header_opts);
  8. $json_cat_tree = file_get_contents($json_cat_url, false, $context );
wNogachSpisz
Ja kiedyś też byłem nieźle zajarany contextami...
Do momentu gdy okazało że nie działają na niektórych wersjach php/apache.

Polecam porządne rozwiązanie - pear:http_request2
greycoffey
Curl wymiata, napisz sobie prostą nakładkę na to, i rozwiązujesz większość problemów w kilku linijkach kodu.
wNogachSpisz
Cytat(greycoffey @ 4.05.2012, 23:00:24 ) *
Curl wymiata, napisz sobie prostą nakładkę na to, i rozwiązujesz większość problemów w kilku linijkach kodu.

Nie masz chłopcze pojęcia...

pear:http_request2 ma tzw "curl adapter".
Możesz wybrać sobie moduł za pomocą którego bibliteka będzie korzystać z sieci (poliformizm).
Do wyboru do koloru - Socket, CURL, możesz też użyć zupełnie abstrakcyjnego modułu testowego, który będzie zwracał głupoty, np same błędy HTTP, to pozwala łatwo testować aplikacje smile.gif
grzeee
To było za poroste pobieranie żebym curla używał wink.gif
Poza tym coś tu nie grało z serwerem bo na poprzednim gdzie jest nowsza wersja PHP a ustawienia praktycznie te same wszystko, wystarczyło że dodałęm w nagłówku user-agent i zaczeło śmigać.
Nawet admin z nazwy nie wiedział o co chodzi i tłumaczył się jakimś zapętleniem w skrypcie wink.gif

pear:http_request2 wygląda okazale jednak jak już wspominałem to za mała aplikacja na takie dodatki.
greycoffey
Cytat(wNogachSpisz @ 4.05.2012, 23:30:58 ) *
Nie masz chłopcze pojęcia...

pear:http_request2 ma tzw "curl adapter".
Możesz wybrać sobie moduł za pomocą którego bibliteka będzie korzystać z sieci (poliformizm).
Do wyboru do koloru - Socket, CURL, możesz też użyć zupełnie abstrakcyjnego modułu testowego, który będzie zwracał głupoty, np same błędy HTTP, to pozwala łatwo testować aplikacje smile.gif

Oczywiście, proszę Pana. Daruj sobie takie teksty.
Co z tego, curl można mięc na większości serwerów, działa dobrze, więc nie potrzebuje implementować socketów.
Czy ja napisałem, że twój kochany pear::http_request2 jest daremny? Nie znam go, napisałem tylko, że curl wymiata.
Czytaj ze zrozumieniem, Szanowny Panie.
wNogachSpisz
Daremny? Nie rozumiem co masz na myśli.
Nie rozumiem też tego zdania że CURL można mieć na większości serwerów, HTTP_Request mozna mieć na jeszcze większej ilości serwerów...
CURL nie wymiata, CURL jest strasznie wolny, sockety są szybsze..
To tylko kilka powodów dla których warto poświęcić te kilka godzin i nauczyć się HTTP_Request2.
greycoffey
Cytat(wNogachSpisz @ 5.05.2012, 11:23:33 ) *
Daremny? Nie rozumiem co masz na myśli.

Ech, czytaj ze zrozumieniem!
Cytat
Czy ja napisałem, że twój kochany pear::http_request2 jest daremny?

Dalej...
Cytat( @ 5.05.2012, 11:23:33 ) *
Nie rozumiem też tego zdania że CURL można mieć na większości serwerów, HTTP_Request mozna mieć na jeszcze większej ilości serwerów...

CURL można mieć na większości serwerów - prawda.
HTTP_Request2 można mieć na jeszcze większej liczbie serwerów - tyż prawda.
Cytat(wNogachSpisz @ 5.05.2012, 11:23:33 ) *
CURL nie wymiata, CURL jest strasznie wolny, sockety są szybsze..

PHP jest strasznie wolny... Używajmy C... Też jest wolne, piszmy w Assemblerze... W sumie lepsze wyniki da się uzyskać pisząc odrazu w kodzie maszynowym, do tego nie trzeba instalować kolejnych niepotrzebnych programów!

Generalnie nie rozumiesz dużej ilość zdań, polecałbym naukę języka polskiego, miast programowania wink.gif
Do tego nauka czytania ze zrozumieniem, Czcigodny.
wNogachSpisz
To jest forum o PHP, nie o C czy asemblerze..
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.