2012-07-16 15 views
8

zasadzie, ten błąd występuje tylko w CURLPHP CURL Błąd - curl: (56) awaria Recv: Połączenie zresetowane przez element równorzędny

curl: (56) Recv failure: Connection reset by peer 

Ale kiedy odwiedzam go bezpośrednio link bezpośrednio na przeglądarce, to działa!

Jakie są Twoje zalecenia dotyczące naprawy tego lub przyczyny tego błędu?

Uwaga: serwer jest kodowana w ASP i występuje tylko na jednej API wezwanie

+1

Czy istnieje ciasteczko wysłać? – Pete

+0

tak na konsoli, to jest również błąd, nie ma nagłówka/opcji na żądanie curl. a także nie ma żadnego pliku cookie .. –

+0

Zgaduję, że jest to błąd serwera, ale nie wiem, jaka część lub sekcja tego serwera się zdarza –

Odpowiedz

3

Pamiętam obliczu tej kwestii długo z powrotem. Chociaż nie pamiętam co dokładnie sortowane problemu, ale pamiętam, próbując następujące:

1) starałem się przekazać parametry zapytania w adresie URL bezpośrednio i starałem przejazdem metody POST

2) próbowałem za pomocą serwera proxy z dyni, aby zobaczyć, czy jestem prawdopodobnie blokowany przez inny serwer

3) wierzę również poprosił mojego hosta na nią patrzeć i zrobili niektóre ustawienia Apache zmienia

+1

Czy pamiętasz, jaki był wynik? –

+0

Myślę, że host zmienił niektóre ustawienia Apache, ale nie był pewien, jakie były ustawienia. Natychmiast po zmianie ustawień zaczęło działać. Możliwe, że wystąpił problem z wysyłaniem parametrów w żądaniu zwijania. – Sam

+0

Też tutaj, że litespeed środki antyddos mogą umieszczać tymczasowy zakaz na wywołującym IP. Wierzę, że właśnie to mi się przydarzyło. Wciąż jesteśmy w dyskusji. –

3

postanowiłem to wydanie przez usunięcie znaków białych znaków z adresu URL. W mojej sytuacji był to błąd serwera proxy, a nie serwera WWW.

W PHP:

 curl_setopt($ch, CURLOPT_URL, trim($url)); 
+0

Jeśli białe znaki są poprawną częścią adresu URL, możesz zamiast tego użyć funkcji rawurlencode(), aby zastąpić białe znaki za pomocą% 20 – fjaeger

0

miałem podobny problem z tym kodem:

 $url = "http://xxx.xxx.xxx.xxx"; 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_PORT, 44455); //Set the port to connect to 
     //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 44455); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     echo $xml = curl_exec($ch); 
     if(curl_errno($ch)) 
     { 
      echo 'error:' . curl_error($ch); 
     } 
     curl_close($ch); 

Got to rozwiązać, wyłączając w ten sposób:

 //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 44455);