2011-09-19 86 views
8

我已经做了一个Twitter应用程序,只需从我的网站发布推文,使用“twitteroauth”和“oauth”PHP脚本here为什么我的Twitter应用程序返回端口错误?

一切正常,但我的错误日志给我这个错误:

Undefined index: port OAuth.php 383

虽然这似乎并没有从功能抑制我的剧本,我想继续我的错误日志无噪音。并避免可能的未来问题。

任何想法为什么会发生这种情况?

对于参考OAuth.php代码中的错误日志指出的是:

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文件中的错误,它访问数组的索引而不执行索引检查。

很明显,编写这个代码的人很聪明,可以使用错误抑制运算符@而不是进行适当的索引检查 - 懒惰(假设最好)。

报告一个错误的上游,一个解决方法是简单的:

$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.

如果您不想触摸您的error_reporting,请尝试使用类似$port = (array_key_exists('port', $parts) ? $parts['port'] : 80);的内容隐藏通知。

相关问题