J'ai besoin de récupérer l'adresse IP d'un utilisateur. Mon hôte local renvoie ::1
en tant qu'IP. Je suis curieux, si c'est un comportement attendu? Je lance MAMP sur Snow Leopard.
Même question, et j'ai trouvé une solution valide, testée, qui fonctionne bien. Je voulais aussi avoir l'adresse IP addy - de 127.0.0.1 au lieu d'avoir à accepter le the :: 1 et à débattre de l'ensemble des problèmes liés à IPv4/6. Alors, j'ai traîné quelques instants et suis tombé sur un commentaire de 2008 de @Brad - ici: http://board.issociate.de/thread/489575/SERVERquotREMOTEADDRquot-returning-1.html
Résumer - (sur Mac OS - Mountain Lion en particulier)
Sudo vi /etc/Apache2/httpd.conf
Trouvez où votre Apache "écoute" les ips/ports, etc ... Ce sera typiquement une ligne ressemblant à ceci
Listen 80
Faites-le ressembler à ceci:
Listen 127.0.0.1:80
Réenregistrez-le .. Redémarrez Apache .. Voilà!
Maintenant, $_SERVER[REMOTE_ADDR]
ressemblera à ceci 127.0.0.1
.
J'espère que ça aide quelqu'un.
::1
est l'équivalent IPv6 de l'adresse IPv4 127.0.0.1
.
Vous pouvez convertir une adresse IPv6 en une adresse IPv4 en utilisant la fonction inet_ntop()
comme Adam, a déclaré.
La modification du /etc/Apache2/httpd.conf
ou même du /private/etc/hosts
n'est pas la solution. Il retourne :: 1 parce que c'est l'équivalent IPv6 de l'ancien 127.0.0.1
(mais d'or) d'IPv4. Comme défini dans le /privates/etc/hosts
, chaque fois que vous accédez à http://localhost
, cela suppose que IPv6 :: 1. C'est donc le comportement attendu.
Une solution de contournement consisterait à accéder directement à http://127.0.0.1
. Cela fonctionnera très bien. Mais rappelez-vous que la disponibilité IPv6 augmente. Vous pouvez vous assurer que votre serveur (après le déploiement) répondra uniquement à IPv4, mais à moyen terme, si votre site/application Web ne gère pas correctement les protocoles IPv4 et IPv6, il est fort probable que quelque chose se passe mal, dans un an et demi. Ou plus tôt, on ne sait jamais.
pour qui n'a pas encore résolu ce problème, il semble que le fichier hosts
soit manquant ou que la ligne
127.0.0.1 localhost
dans etc\hosts
LINUX
en /private/etc/hosts
périphériques MAC
dans \%WINDIR%\system32\drivers\etc\hosts
WINDOWS xp/Vista/7/8 /
lorsque le fichier hosts
est supprimé ou missed
ou la ligne aussi le IPV6
sera défini par default
...
Vous devez désactiver la prise en charge IPv6 dans votre système d'exploitation pour qu'Apache cesse d'afficher ces adresses au format IPv6 lorsque vous souhaitez utiliser le format IPv4. J'ai désactivé le support IPv6 et il fonctionne comme prévu maintenant.
J'ai récemment rencontré ce problème, bien que je ne me souvienne jamais d'avoir activé la prise en charge d'ipv6 sur mon système Windows 7, Microsoft pourrait le faire dans l'une de leurs mises à jour (peut-être).