为什么我的 Twitter 应用程序返回端口错误?

发布于 2024-12-05 19:31:39 字数 783 浏览 0 评论 0原文

我制作了一个 Twitter 应用程序,用于简单地从我的网站发布推文,使用“twitteroauth”和“oauth”PHP 脚本此处

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

未定义索引:端口 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";
}

I have made a Twitter app to simply post tweets from my web site, using the "twitteroauth" and "oauth" PHP scripts here.

Everything works, but my error logs are giving me this error:

Undefined index: port OAuth.php 383

Although this doesn't seem to be inhibiting my scripts from functioning, I'd like to keep my error logs free of noise. And avoid possible future issues.

Any idea why this is happening?

For reference the code in OAuth.php the error log is pointing to is this:

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";
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

深爱不及久伴 2024-12-12 19:31:39

这是 OAuth.php 文件中的一个错误,它访问数组的索引而不执行索引检查。

显然,编写此代码的编码器/ette 非常聪明地使用错误抑制运算符 @ 而不是进行适当的索引检查 - 很懒(假设最好)。

将其报告为上游错误,修复很简单:

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

并删除两个 @ 运算符。

That is an error in the OAuth.php file, it accesses an index of an array w/o performing an index check.

Obviously the coder/ette who wrote this was so clever-clever to use the error suppression operator @ instead of doing a proper index check - being lazy (to assume the best).

Report this as a bug upstream, a fix is trivial:

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

and removing the two @ operators.

情丝乱 2024-12-12 19:31:39

发生这种情况是因为 parse_url() 不能保证返回端口号(强调我的):

如果省略组件参数,则返回关联数组。 至少一个
元素将出现在数组中。

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

This happens because parse_url() is not guaranteed to return the port number (emphasis mine):

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

Try using something like $port = (array_key_exists('port', $parts) ? $parts['port'] : 80); to hide the notice if you wish to not touch your error_reporting.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文