IP-адрес машины в PHP дает :: 1, но почему?

Я пытаюсь получить ip-адрес моей машины через php. Для этого я пишу код вроде:

<?php echo "<br />".$_SERVER['REMOTE_ADDR'];?> 

Но этот фрагмент кода не работает. Он возвращает « ::1 ». Пожалуйста, помогите мне, как получить фактический IP-адрес.

::1 – фактический IP. Это адрес обратной связи ipv6 (т.е. localhost). Если вы используете ipv4, это будет 127.0.0.1 .

Если вы хотите получить другой IP-адрес, вам необходимо подключиться к серверу через другой сетевой интерфейс.

Если вы хотите получить IP-адрес пользователя, вы можете сделать что-то вроде:

 <?php if(!empty($_SERVER['HTTP_CLIENT_IP'])){ $ip=$_SERVER['HTTP_CLIENT_IP']; } elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } else{ $ip=$_SERVER['REMOTE_ADDR']; } ?> <?php echo "<br />".$ip;?> 

Он получит фактический IP-адрес пользователя, независимо от прокси и т. Д.

Если вы пытаетесь запустить localhost, этот ответ исправит вашу проблему. Всего несколько изменений на

 apache2/httpd.conf 

искать все «слушать» слова ex:

 Listen 80 

Сделайте так.

 Listen 127.0.0.1:80 

чем перезапустить апач

 $_SERVER[REMOTE_ADDR] 

покажет Listen 127.0.0.1

вы можете увидеть ответ в этом подробном ответе

$ _SERVER ['REMOTE_ADDR'] – это IP-адрес клиента.

$ _SERVER ['SERVER_ADDR'] – это IP-адрес сервера.

Ссылка: http://php.net/manual/en/reserved.variables.server.php

Посмотрите на вывод phpinfo() . Если адрес не указан на этой странице, адрес недоступен непосредственно через PHP.