Почему мое приложение Twitter возвращает ошибку порта? - PullRequest
8 голосов
/ 19 сентября 2011

Я создал приложение для Twitter, чтобы просто публиковать твиты с моего веб-сайта, используя PHP-скрипты «twitteroauth» и «oauth» здесь .

Все работает, но мои журналы ошибок дают мне эту ошибку:

Неопределенный индекс: порт 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";
}

Ответы [ 3 ]

7 голосов
/ 19 сентября 2011

Это ошибка в файле OAuth.php, он обращается к индексу массива без выполнения проверки индекса.

Очевидно, что кодер / ette, написавший это, был настолько умен, чтобы использоватьоператор подавления ошибок @ вместо правильной проверки индекса - ленивый (чтобы принять лучшее).

Сообщить об этом как об ошибке в восходящем потоке, исправление тривиально:

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

и удаление двух @ операторов.

5 голосов
/ 19 сентября 2011

Это происходит потому, что parse_url () не гарантирует возвращение номера порта (выделено мое):

Если параметр компонента опущен, возвращается ассоциативный массив. По крайней мере один элемент будет присутствовать в массиве.

Попробуйте использовать что-то вроде $port = (array_key_exists('port', $parts) ? $parts['port'] : 80);, чтобы скрыть уведомление, если вы не хотите прикасаться к вашему error_reporting.

4 голосов
/ 14 июня 2013

Эта ошибка была исправлена. Вот URL коммита:

https://github.com/christiandavid/twitteroauth/commit/dd944c8de3123ae5e0f380b4a907c92903059fae

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...