ユーザーのIPを取得する必要があります。私のローカルホストは::1
をIPとして返しています。これが予想される動作である場合、私は興味がありますか? Snow LeopardでMAMPを実行しています。
同じ質問で、テストされた有効なソリューションが見つかりました。 :: 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
。
それが誰かを助けることを願っています。
_::1
_は、IPv4の_127.0.0.1
_アドレスに相当するIPv6です。
Adamによると、関数inet_ntop()
を使用してIPv6アドレスをIPv4アドレスに変換できます。
/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年以内に何かがうまくいかない可能性が高くなります。またはすぐに、私たちは決して知りません。
この問題を再愛していない人のために、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
またはIPV6
はdefault
によって設定されます...
IPv4形式が必要な場合、これらのIPv6形式のアドレスの表示を停止するには、ApacheのOSでIPv6サポートを無効にする必要があります。現在、IPv6サポートとその動作を無効にしました。
私は最近この問題に遭遇しましたが、Windows 7システムでipv6サポートを有効にしたことを覚えていませんが、Microsoftがそれらのアップデートの1つで(おそらく)行うことができます。