2011-09-19 16 views
8

Ho creato un'app di Twitter per pubblicare semplicemente tweet dal mio sito web, utilizzando gli script PHP "twitteroauth" e "oauth" here.Perché la mia app Twitter restituisce un errore di porta?

Tutto funziona, ma i miei registri degli errori mi stanno dando questo errore:

Undefined index: port OAuth.php 383

Anche se questo non sembra essere inibendo i miei script di funzionare, mi piacerebbe tenere i miei log di errore privo di rumore . Ed evitare possibili problemi futuri.

Qualche idea sul perché questo sta accadendo?

Per riferimento il codice nel OAuth.php log degli errori sta indicando è questo:

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

Ebbene, che cosa '$ parti [ "port"]' contenere? Non conosco la libreria, ma se è vuota, forse è necessario aggiungere un valore? –

risposta

7

Questo è un errore nel file OAuth.php, accede a un indice di un array senza eseguire un controllo indice.

Ovviamente il coder/ette che ha scritto questo è stato così intelligente da usare l'operatore di soppressione degli errori @ invece di fare un controllo dell'indice adeguato - essere pigri (per assumere il meglio).

Segnalare questo come un bug a monte, una correzione è banale:

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

e rimuovendo le due @ operatori.

5

Questo accade perché parse_url() non è garantito per restituire il numero di porta (sottolineatura mia):

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

Prova a utilizzare qualcosa come $port = (array_key_exists('port', $parts) ? $parts['port'] : 80); per nascondere l'avviso se non desideri toccare il tuo error_reporting.

Problemi correlati