web-dev-qa-db-ja.com

MAMPはlocalhostのIPとして:: 1を返す必要がありますか?

ユーザーのIPを取得する必要があります。私のローカルホストは::1をIPとして返しています。これが予想される動作である場合、私は興味がありますか? Snow LeopardでMAMPを実行しています。

33
Mild Fuzz

同じ質問で、テストされた有効なソリューションが見つかりました。 :: 1を受け入れてIPv4/6の問題全体を議論する代わりに、127.0.0.1のip addyが必要でした。だから、私はしばらくの間トロールし、@ Bradによって行われた2008年のコメントに落ちました-ここ: http://board.issociate.de/thread/489575/SERVERquotREMOTEADDRquot-returning-1.html

要約-(Mac OS-特にMountain Lion)

Sudo vi /etc/Apache2/httpd.conf

Apacheがips/portsなどを「リッスン」している場所を見つけます。通常、これは次のような行になります。

Listen 80

次のようにします。

Listen 127.0.0.1:80

再保存してください。 Apacheを再起動します。出来上がり!

$_SERVER[REMOTE_ADDR]は次のようになります127.0.0.1

それが誰かを助けることを願っています。

38
Bill Ortell

_::1_は、IPv4の_127.0.0.1_アドレスに相当するIPv6です。

Adamによると、関数inet_ntop()を使用してIPv6アドレスをIPv4アドレスに変換できます。

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

31

/etc/Apache2/httpd.confまたは/private/etc/hostsを変更することは解決策ではありません。古い(ただしゴールド)IPv4の127.0.0.1に相当するIPv6であるため、:: 1を返しています。 /privates/etc/hostsで定義されているように、http://localhostにアクセスするときは常にIPv6 :: 1を想定しています。それが期待される動作です。

回避策は、http://127.0.0.1に直接アクセスすることです。それはうまく動作します。ただし、IPv6の可用性が高まっていることを忘れないでください。サーバー(展開後)がIPv4のみに応答することを確認できますが、中期的には、サイト/ WebアプリがIPv4とIPv6の両方を適切に処理しない場合、1/2年以内に何かがうまくいかない可能性が高くなります。またはすぐに、私たちは決して知りません。

5
Isaias Soares

この問題を再愛していない人のために、hostsファイルが見つからないか、行が

127.0.0.1       localhost   

etc\hosts LINUX

/private/etc/hosts MACデバイス

\%WINDIR%\system32\drivers\etc\hosts WINDOWS xp/Vista/7/8 /

ファイルhostsが削除されるか、missedまたはIPV6defaultによって設定されます...

2
K3rnel31

IPv4形式が必要な場合、これらのIPv6形式のアドレスの表示を停止するには、ApacheのOSでIPv6サポートを無効にする必要があります。現在、IPv6サポートとその動作を無効にしました。

私は最近この問題に遭遇しましたが、Windows 7システムでipv6サポートを有効にしたことを覚えていませんが、Microsoftがそれらのアップデートの1つで(おそらく)行うことができます。

0
Zubair1