我创建了一个Twitter应用程序,只需使用“twitteroauth”和“oauth”PHP脚本here从我的网站发布推文。
一切正常,但我的错误日志给了我这个错误:
未定义索引:端口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
文件中的错误,它访问没有执行索引检查的数组的索引。
显然编写这个的编码器/ ette非常聪明地使用错误抑制操作符@
而不是进行正确的索引检查 - 是懒惰的(假设最好)。
将此报告为上游错误,修复很简单:
$parts = parse_url($this->http_url) + array('port'=>NULL, 'path'=>NULL);
并删除两个@
运算符。
答案 1 :(得分:5)
这是因为parse_url()无法保证返回端口号(强调我的):
如果省略component参数,则返回关联数组。 至少一个 元素将出现在数组中。
如果您不想触摸$port = (array_key_exists('port', $parts) ? $parts['port'] : 80);
,请尝试使用error_reporting
之类的内容隐藏通知。
答案 2 :(得分:4)