2010-05-21 7 views
5

Tất cả,Truy xuất Tên miền thay vì IP

Tôi đang sử dụng lệnh sau để truy xuất tên miền của máy chủ của tôi.

$_SERVER['HTTP_HOST'] 

Điều này dường như trả lại địa chỉ IP thay vì tên miền như www.example.com. Tôi đã xem PHPInfo và nó cũng liệt kê một địa chỉ IP cho HTTP_HOST thay vì tên miền. Tôi cần thay đổi gì để làm cho tên miền xuất hiện thay vì IP?

Cảm ơn

Trả lời

6

Sử dụng $_SERVER['SERVER_NAME'] thay thế.

Hoặc, bạn có thể xem mọi Biến máy chủ mà bạn có sẵn nhưng đặt tập lệnh này vào một trong các trang PHP của bạn trên máy chủ này.

<?PHP 
foreach($_SERVER as $key_name => $key_value) { 
    print $key_name . " = " . $key_value . "<br>"; 
} 
?> 
+0

Đó cũng liệt kê địa chỉ IP thay vì tên miền – Jake

+2

@Vincent: Nếu '$ _SERVER ['SERVER_NAME']' liệt kê địa chỉ IP, Apache bị định cấu hình sai, vì điều này sẽ chứa giá trị của chỉ thị ServerName của Apache: http://httpd.apache.org/docs/ 2.2/mod/core.html # servername – Powerlord

+0

... hoặc chỉ 'var_dump ($ _ SERVER)' – Kzqai

1

$_SERVER['HTTP_HOST'] (có thể không được xác định nếu máy khách yêu cầu HTTP/1.0) chứa tên máy chủ mà khách hàng yêu cầu.

Nếu khách hàng yêu cầu http://127.0.0.1/, nó sẽ chứa 127.0.0.1; cho http://localhost/ nó sẽ chứa localhost; cho http://127.0.0.1:81/ nó sẽ chứa 127.0.0.1:81.

+0

Có thể xác định địa chỉ IP bằng một tên máy chủ lưu trữ trong tệp/etc/hosts và có thể $ _SERVER ["SERVER_NAME"] hoặc $ _SERVER ["HTTP_HOST"] này sẽ tải lên? – Jake

1

gethostbyaddr() có thể lấy một hostname cho địa chỉ IP, nhưng chỉ khi bản ghi DNS đã được thiết lập đúng cách