2011-02-10 10 views
8
function get_data($url) { 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
} 

मुझे यह फ़ंक्शन इंटरनेट से मिलता है। जब मैं इसे इस कोड $returned_content = get_data('http://google.com'); का उपयोग करके एक php फ़ाइल में परीक्षण करता हूं लेकिन यह काम नहीं कर सकता है। और "301 स्थायी रूप से हटाया गया" दस्तावेज़ यहां स्थानांतरित हो गया है। त्रुटि। क्यूं कर?यह php curl फ़ंक्शन क्यों काम नहीं कर सकता

+4

क्या होता है या नहीं होता है? –

+1

क्या आपको 302 मूवर्ड HTTP त्रुटि मिल रही है? या कुछ समान है। विस्तृत आदमी –

+0

हाँ, मुझे कोड को सही करने के लिए 302 हटाया गया HTTP त्रुटि है। धन्यवाद – runeveryday

उत्तर

29

आपकी टिप्पणियों के मुताबिक, आपको 302 स्टेटस कोड मिल रहा है।

curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); 

30x रीडायरेक्ट का पालन करने की कोशिश करो। curl_setopt()

+0

धन्यवाद। यह ठीक है। लेकिन मुझे नहीं पता कि उस लाइन को क्यों जोड़ना चाहिए। – runeveryday

+2

@Runeveryday क्योंकि रिमोट सर्वर आपको '302' हेडर रीडायरेक्ट पास करता है और शरीर में 'स्थान:' स्ट्रिंग देता है। एक सामान्य ब्राउज़र स्वचालित रूप से नए स्थान पर आ जाएगा (एक नया अनुरोध ट्रिगर)। कर्ल के साथ, आपको इसे स्पष्ट रूप से पालन करने के लिए कहना होगा। स्टेटस कोड पर यह पृष्ठ देखें और उनका क्या अर्थ है: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.htmlhttp://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html –

-1

सिर्फ एक "गूंज" निम्न पंक्ति का प्रयास के रूप में जोड़ने के रूप में आसान हो सकता है:

echo get_data('http://google.com'); 

इसके अलावा, जाँच कृपया अगर cURL मॉड्यूल php.ini

में

को सक्रिय कर रहा है पता लगाने के लिए आसानी से बस info.php कर्ल के लिए

<?php 
phpinfo(); 

?> 

खोजें नामक एक नई फ़ाइल में निम्न लाइनों डाल दिया।

आप नहीं मिल रहा यह कृपया http://php.net/manual/en/book.curl.php पर एक नज़र क्या php कर्ल मॉड्यूल

इंस्टॉल करें या अपने कर्ल विकल्प के लिए निम्न जोड़ने के लिए शामिल है को देखने के लिए कर सकते हैं:

curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION ,सच);

और डबल पोस्ट के लिए खेद है।

+0

यदि कर्ल एक्सटेंशन सक्रिय नहीं है तो उसे पहले स्थान पर एक अपरिभाषित फ़ंक्शन त्रुटि मिलेगी ... -_- – BoltClock

+0

curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, TRUE); – bandam

+0

करना चाहिए, आप सही हैं, लेकिन मुझे नहीं पता कि इस लाइन को – runeveryday

3

पर

मैनुअल अपने get_data समारोह के लिए एक और विकल्प जोड़ने:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

गूगल स्थानीय Google सर्वर पर आप रीडायरेक्ट हो रहा है और अपने कर्ल कॉल वर्तमान में रीडायरेक्ट का पीछा करते हुए नहीं है।

ओह, हाँ,
और एक var_dump($returned_content); परिणाम देखने के लिए कार्य करें: पी

+0

धन्यवाद । यह मेरे जीवन को बचाया। –

संबंधित मुद्दे