2011-06-08 21 views
16

Đang cố gắng để có được thông tin từ một nguồn bên ngoài, tôi nhận được lỗi sau:PHP lỗi: php_network_getaddresses: getaddrinfo thất bại: (trong khi nhận được thông tin từ trang web khác.)

Warning: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in line #...

Hôm qua tất cả mọi thứ vẫn ổn, vì vậy những gì đã xảy ra với kịch bản này, mà không phải là làm việc và mang lại cho tôi những lỗi ở trên? Bất kỳ giải pháp hoặc gợi ý để giải quyết vấn đề này?

$uri = "http://api.hostip.info/?ip=$ip&position=true"; 

$dom->load($uri); 

Tôi cũng đã cố gắng bằng cách chuyển đổi DNS để IP nhưng sau đó tôi nhận được cảnh báo: failed to open

$uri = "174.129.200.54/?ip=$ip&position=true"; 

tôi đã cố gắng để loại bỏ các http nhưng tôi vẫn nhận được lỗi trên.

+0

@Cold Hawaii: Ok, tôi đang cập nhật câu hỏi của tôi. –

+0

Bạn có thể mở liên kết ngay trong trình duyệt của mình không? Nếu không, đó không phải là một vấn đề PHP. Hostip.info có thể khiến bạn bị chặn truy cập trang web của họ vì lạm dụng hoặc bất cứ điều gì. – sanmai

+0

Trên máy tính của tôi lệnh này hoạt động tốt: 'curl 'http://api.hostip.info/?ip=\'curl whatismyip.org \' & position = true "' – sanmai

Trả lời

19

Đó là bởi vì bạn không thể giải quyết tên máy chủ lẽ DNS vấn đề này, chủ nhà là không thể truy cập ...

cố gắng sử dụng địa chỉ IP thay cho tên máy chủ ... ping này tên máy chủ ... nslookup it ...

+0

tôi chuyển đổi "api.hostip.info" thành "174.129.200.54" nhưng vẫn không hoạt động và cảnh báo tin nhắn => không tải được. –

+1

thats right gây api.hostip.info không phải là mặc định cho 174.129.200.54 –

+0

thử wget http : //api.hostip.info/? ip = $ ip & position = true nếu nó trả về đúng xml, vấn đề không có trong kết nối ... –

3

Tôi sẽ tưởng tượng rằng các máy chủ DNS lưu trữ bạn đang sử dụng không hoạt động đúng (hoặc máy chủ DNS cho miền bạn đang giải quyết không hoạt động bình thường). Bạn có thể cố gắng sửa chữa khả năng trước đây.

Bạn có ít nhất 2 máy chủ định danh đã đăng ký trên bộ điều hợp mạng của mình không? Bạn luôn có thể hoán đổi máy tính của mình để sử dụng một máy chủ DNS lưu trữ khác để loại bỏ điều này. Hãy thử Google:

8.8.8.8 
8.8.4.4 
+0

tôi thử rất nhiều phương pháp nhưng tiếc là không thành công, và cũng không có phương pháp thẳng nào cho việc này ... tôi bị kẹt ngay .. phải làm gì .. –

+0

Đây không phải là phương pháp cần thiết - đây là DNS của máy chủ lưu trữ bộ nhớ đệm của bạn cấu hình (nếu bạn có quyền truy cập). –

+0

Nhưng, tôi đã thực thi mã này và cung cấp cho đầu ra, nhưng bây giờ không hoạt động. –

1

Nếu bạn có thể giảm thời gian ngừng hoạt động tạm thời trên máy chủ từ xa mà bạn đang cố gắng kết nối, thì chỉ cần để cấu hình mạng cục bộ không thành vấn đề.

Sử dụng địa chỉ IP thay vì tên máy chủ sẽ chỉ hoạt động đối với miền mặc định trên máy chủ từ xa.

Điều gì sẽ xảy ra khi bạn thử sử dụng www.google.com (hoặc địa chỉ IP của nó)? Nếu bạn stil không thể kết nối, sau đó một cái gì đó của nó để làm với mạng giữa máy chủ của bạn và thế giới bên ngoài.

+0

có thể là sự cố cấu hình máy chủ nội bộ. –

7

Trong tệp httpd.conf sau, định cấu hình ServerName đúng cách.

/etc/httpd/conf/httpd.conf

Giống như dưới đây:

ServerName 127.0.0.1:80 

hoặc

ServerName sitename 

này giải quyết vấn đề tương tự tôi đã phải đối mặt.

+0

Tôi KHÔNG CÓ IDEA tại sao điều này tạo sự khác biệt nhưng nó cũng giải quyết được vấn đề của tôi. Tôi định kỳ sẽ nhận được thất bại DNS và thiết lập ServerName cố định vấn đề. – David

3

Trong trường hợp của tôi (máy của tôi là ubuntu 16), tôi nối thêm /etc/resolvconf/resolv.conf.d/base tệp bằng cách thêm các dòng dưới đây ns.

nameserver 8.8.8.8 
nameserver 4.2.2.1 
nameserver 2001:4860:4860::8844 
nameserver 2001:4860:4860::8888 

sau đó chạy kịch bản cập nhật,

resolvconf -u 
+0

tại sao lại hoạt động? tôi cần biết điều này .. –

+1

@AbdulAzizAlBasyir Vì độ phân giải dns, kịch bản cố gắng nhận ra địa chỉ. Bạn có thể tìm thêm thông tin từ [tại đây.] (Http://manpages.ubuntu.com/manpages/zesty/man5/resolv.conf.5.html). –

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