33 votes

devrait $ ip = $ _ SERVER ['REMOTE_ADDR']; return :: 1 sur un mamp localhost?

Besoin de récupérer l'IP d'un utilisateur, et mon hôte local renvoie ':: 1' comme IP, et je suis curieux de savoir si c'est un comportement attendu

Exécution de MAMP sur Snow Leopard.

38voto

Bill Ortell Points 598

Même question, et a trouvé une solution valide, testé, fonctionne bien. Je voulais avoir l'ip addy - de 127.0.0.1 ainsi au lieu d'avoir à accepter l' ::1 et de débattre de l'ensemble de l'IPv4/6 questions. Donc, j'ai parcouru quelques instants et est tombé sur un 2008, les commentaires faits par @Brad - ici: http://board.issociate.de/thread/489575/SERVERquotREMOTEADDRquot-returning-1.html

Résumant - (sur Mac OS Mountain Lion en particulier)

sudo vi /etc/apache2/httpd.conf

Trouver où votre apache "écouter" -ing de l'ip/ports, etc... Généralement, ce sera une ligne ressemblant à ceci

Listen 80

Faire ressembler à ceci:

Listen 127.0.0.1:80

Enregistrer à nouveau. Redémarrer Apache. Voila!

Maintenant, $_SERVER[REMOTE_ADDR] ressemblera à ceci 127.0.0.1.

Espérons que cela aide quelqu'un.

31voto

Tomasz Kowalczyk Points 7520

::1 est l'équivalent IPv6 de l'adresse IPv4 127.0.0.1 .

Vous pouvez convertir l'adresse IPv6 en adresse IPv4 en utilisant la fonction inet_ntop() comme l'a dit Adam.

http://php.net/manual/en/function.inet-ntop.php

5voto

Isaias Soares Points 71

La modification de l' /etc/apache2/httpd.conf ou même /private/etc/hosts n'est pas la solution. C'est le retour ::1 parce que c'est l'IPv6 équivalente à l'ancienne (mais l'or) IPv4 de l' 127.0.0.1. Qu'elle est définie dans l' /privates/etc/hosts, chaque fois que vous accédez http://localhost il suppose IPv6 ::1. Donc, c'est le comportement attendu.

Une solution serait d'accéder http://127.0.0.1 directement. Cela fonctionnera parfaitement. Mais rappelez-vous que le protocole IPv6 disponibilité croissante. Vous pourriez assurez-vous que votre serveur (après le déploiement) ne pourra répondre à l'IPv4, mais à moyen terme, si votre site web/application ne permet pas de gérer à la fois IPv4 et IPv6 correctement, il ya une grande chance que quelque chose se passe mal dans 1/2 ans. Ou plus tôt, on ne sait jamais.

2voto

K3rnel31 Points 652

pour qui n'a pas résolu ce problème, il semble que le fichier hosts est manquant ou que la ligne

 127.0.0.1       localhost   
 

en etc\hosts LINUX

en /private/etc/hosts appareils MAC

en \%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 ...

0voto

Zubair1 Points 1313

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 le format IPv4. J'ai désactivé le support IPv6 et son fonctionnement comme prévu maintenant.

J'ai récemment rencontré ce problème, bien que je ne me souvienne pas d'avoir activé la prise en charge d'ipv6 sur mon système Windows 7, cela pourrait être fait par Microsoft dans l'une de leurs mises à jour (peut-être).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X