2013-05-20 27 views
8

Làm cách nào để phát hiện lỗi này bằng cách sử dụng php curl? curl trả về thành công ngay cả khi URL không tồn tại.Làm cách nào để phát hiện lỗi không tìm thấy URL trong php curl?

Not Found 
The requested URL /foo/index.php/items/edit was not found on this server. 

Mã của tôi

$post_fields = array('info' => json_encode($fields)); 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_POST,count($post_fields)); 
    curl_setopt($ch,CURLOPT_POSTFIELDS,$post_fields); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
    curl_setopt($ch,CURLINFO_CONTENT_TYPE,'application/x-www-form-urlencoded charset=utf-8'); 

    $result = curl_exec($ch); 
    echo $result; 

    if(curl_error($ch)){ 
     $result = curl_error($ch); 
     curl_close($ch); 
     return $result; 
    }else{ 
     curl_close($ch); 
     return json_decode($result,true); 

    } 
+4

$ HTTP_STATUS = curl_getinfo ($ ch, CURLINFO_HTTP_CODE); kiểm tra xem nếu nó là 404 hoặc một cái gì đó khác không tìm thấy –

+0

url sẽ trả lại lỗi 404, vì vậy bạn nên kiểm tra các tiêu đề của phản hồi. – MatRt

Trả lời

9

sử dụng này để có được mã trạng thái HTTP:

$code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

Nếu 404, nó có nghĩa là URL yêu cầu không thể được tìm thấy.

Lưu ý: nhớ để cấp dòng này trước khi curl_close($ch);

+0

nhờ hoạt động của nó .. nhưng tôi có thể giả định rằng tất cả các mã trạng thái khác với 200 là lỗi không? – Harikrishnan

+1

Có, nhưng bạn cũng nên xem xét phản hồi của máy chủ nào đối với bạn. 200 chỉ có nghĩa là yêu cầu thành công. – Raptor