2012-07-16 34 views
8

về cơ bản, lỗi này chỉ xảy ra trong CURLPHP cURL Lỗi - curl: (56) Recv thất bại: Connection reset by peer

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

Nhưng khi tôi truy cập trực tiếp vào liên kết trực tiếp trên trình duyệt của tôi, nó hoạt động!

Đề xuất của bạn về việc sửa lỗi này hoặc nguyên nhân của lỗi này là gì?

Lưu ý: máy chủ được mã hóa trong ASP và nó chỉ xảy ra trên một API Gọi

+1

Có một cookie để gửi? – Pete

+0

vâng trên bàn điều khiển, đó cũng là lỗi, không có tiêu đề/tùy chọn trên yêu cầu curl. và cũng không có cookie liên quan đến .. –

+0

Tôi đoán rằng đây là Lỗi Máy chủ, nhưng tôi không biết phần nào hoặc phần của Máy chủ này xảy ra –

Trả lời

3

Tôi nhớ phải đối mặt với vấn đề này trong một thời gian dài trở lại. Trong khi tôi không nhớ chính xác những gì được sắp xếp vấn đề này, nhưng tôi nhớ cố gắng như sau:

1) Tôi đã cố gắng để vượt qua các tham số truy vấn trong url trực tiếp và tôi đã cố gắng đi qua phương thức POST

2) tôi đã cố gắng sử dụng một proxy với curl để xem nếu tôi đã có thể bị chặn bởi các máy chủ khác

3) tôi tin rằng tôi cũng yêu cầu chủ nhà của tôi để nhìn vào nó và họ thực hiện một số thiết lập Apache thay đổi

+1

Bạn có nhớ kết quả là gì không? –

+0

Tôi nghĩ rằng máy chủ đã thay đổi một số cài đặt Apache nhưng không chắc chắn cài đặt của chúng. Ngay lập tức sau khi thay đổi các thiết lập, nó bắt đầu hoạt động. Cũng có thể đã có một vấn đề với cách tôi đã gửi các tham số trong yêu cầu curl của tôi. – Sam

+0

Tôi cũng ở đây rằng các biện pháp chống lừa đảo có thể đang đặt lệnh cấm tạm thời trên IP gọi. Tôi tin rằng đây là những gì đã xảy ra với tôi. Chúng tôi vẫn đang thảo luận. –

3

tôi giải quyết này vấn đề bằng cách xóa các ký tự khoảng trắng khỏi URL. Trong tình huống của tôi, đó là máy chủ proxy bị lỗi, không phải máy chủ web.

Trong PHP:

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

Nếu các ký tự khoảng trắng là một phần hợp lệ của URL, bạn có thể sử dụng hàm rawurlencode() thay thế, để thay thế các ký tự khoảng trắng bằng% 20 – fjaeger

0

Tôi có vấn đề tương tự với mã này:

 $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); 

Chấn nó giải quyết bằng cách vô hiệu hóa này:

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