2011-09-19 24 views
8

Tôi đã tạo một ứng dụng Twitter để chỉ cần đăng các mẩu tin từ trang web của mình, sử dụng các tập lệnh PHP "twitteroauth" và "oauth" PHP here.Tại sao ứng dụng Twitter của tôi trả về lỗi cổng?

Tất cả mọi thứ hoạt động, nhưng các bản ghi lỗi của tôi đang đem lại cho tôi lỗi này:

Undefined index: port OAuth.php 383

Mặc dù điều này dường như không được ức chế kịch bản của tôi từ chức năng, tôi muốn giữ các bản ghi lỗi của tôi miễn phí của tiếng ồn . Và tránh các vấn đề có thể xảy ra trong tương lai.

Bất kỳ ý tưởng nào tại sao điều này đang xảy ra?

Để tham khảo mã trong OAuth.php các bản ghi lỗi được trỏ đến là thế này:

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

Vâng, phần '$ [" cổng "]' chứa? Tôi không biết thư viện nhưng nếu nó trống, có lẽ bạn cần phải thêm một giá trị? –

Trả lời

7

Đó là lỗi trong tệp OAuth.php, nó truy cập vào chỉ mục của mảng bằng cách thực hiện kiểm tra chỉ mục. Rõ ràng là coder/ette đã viết điều này rất thông minh để sử dụng toán tử triệt tiêu lỗi @ thay vì thực hiện kiểm tra chỉ mục thích hợp - lười biếng (giả sử tốt nhất).

Báo cáo này là lỗi ở thượng nguồn, cách khắc phục là tầm thường:

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

và loại bỏ hai @ nhà khai thác.

5

Điều này xảy ra bởi vì parse_url() không được bảo đảm để trả lại số cổng (tôi nhấn mạnh):

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

Hãy thử sử dụng một cái gì đó như $port = (array_key_exists('port', $parts) ? $parts['port'] : 80); để ẩn thông báo nếu bạn không muốn chạm vào error_reporting.

Các vấn đề liên quan