2011-09-19 22 views
8

मैंने "twitteroauth" और "oauth" PHP स्क्रिप्ट्स here का उपयोग करके, मेरी वेबसाइट से ट्वीट्स पोस्ट करने के लिए एक ट्विटर ऐप बनाया है।मेरा ट्विटर ऐप पोर्ट पोर्ट त्रुटि क्यों लौटा रहा है?

सब कुछ काम करता है, लेकिन मेरी त्रुटि लॉग मुझे इस त्रुटि दे रहे हैं:

Undefined index: port OAuth.php 383

इस हालांकि काम करने से मेरी स्क्रिप्ट बाधा होने के लिए नहीं लगता है, मैं शोर से मुक्त मेरी त्रुटि लॉग रखना चाहते हैं । और संभावित भविष्य के मुद्दों से बचें।

कोई विचार यह क्यों हो रहा है?

public function get_normalized_http_url() { 
$parts = parse_url($this->http_url); 
$port = @$parts['port'];  <-- Line 383 
$scheme = $parts['scheme']; 
$host = $parts['host']; 
$path = @$parts['path']; 
$port or $port = ($scheme == 'https') ? '443' : '80'; 
if (($scheme == 'https' && $port != '443') 
|| ($scheme == 'http' && $port != '80')) { 
$host = "$host:$port"; 
} 
return "$scheme://$host$path"; 
} 
+0

ठीक है, क्या '$ भागों [" बंदरगाह "]' में क्या है? मुझे लाइब्रेरी नहीं पता लेकिन अगर यह खाली है, तो शायद आपको एक मूल्य जोड़ना होगा? –

उत्तर

7

यह OAuth.php फ़ाइल में एक त्रुटि है, यह एक इंडेक्स चेक करने के लिए एक सरणी w/o की एक अनुक्रमणिका का उपयोग करता है।

स्पष्ट रूप से कोडर/एटटे ने लिखा है कि यह उचित सूचकांक जांच करने के बजाय त्रुटि दमन ऑपरेटर @ का उपयोग करने के लिए इतना चालाक-चालाक था - आलसी होना (सर्वोत्तम मानना)।

एक बग के रूप में इस रिपोर्ट नदी के ऊपर, एक फिक्स मामूली बात है:

$parts = parse_url($this->http_url) + array('port'=>NULL, 'path'=>NULL); 

और दो @ ऑपरेटरों को हटाने।

5

यह इसलिए होता है क्योंकि parse_url() पोर्ट संख्या वापस जाने के लिए (जोर मेरा) इसकी गारंटी नहीं है:

If the component parameter is omitted, an associative array is returned. At least one element will be present within the array.

संदर्भ के लिए OAuth.php में कोड त्रुटि लॉग यह है की ओर इशारा करते है

नोटिस छुपाने के लिए $port = (array_key_exists('port', $parts) ? $parts['port'] : 80); जैसे कुछ का उपयोग करने का प्रयास करें यदि आप अपने error_reporting को छूना नहीं चाहते हैं।

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