(PHP) $_SERVER['REMOTE_ADDR'] 이 ::1 을 반환할 때

IT/Programming/PHP 2014. 10. 22. 13:33

PHP 에서 $_SERVER['REMOTE_ADDR'] 이 ::1 을 반환하는 경우가 있다.

이는 IPv6 에서의 자기 자신을 가리키는 loopback address 이다. 즉, IPv4 의 127.0.0.1 과 똑같은 주소라고 보면 된다.

 

이를 해결하기 위해서는 IPv4 인터페이스로 사이트를 접속하거나 (이를테면 http://localhost/ 가 아닌 http://127.0.0.1/), 바인딩하는 호스트의 정보를 IPv4 형식으로 바꾸면 된다. 이 포스트에서는 Apache의 httpd.conf의 사이트 바인딩 정보 수정, IIS 사이트 바인딩 정보 수정, hosts 파일의 정보 수정, inet_ntop() 함수를 이용한 컨버팅 4가지의 해결방법을 소개한다.

 

 

Apache의 경우 :

httpd.conf 에서 Listen 항목을 찾아본다.

Listen 80  과 같이 적혀있다면, Listen 127.0.0.1:80  의 형식으로 변경하고 Apache를 재시작한다.

 

IIS의 경우 :

 

 

IIS(인터넷 정보 서비스) 관리자를 열고, 사이트 항목에 들어가보면 자신이 열어놓은 웹 사이트의 바인딩 정보를 볼 수 있다. 지금은 필자가 이미 127.0.0.1:80 으로 바인딩을 해둔 상태이지만, 지금 문제가 발생하고 있는 독자들은 아마도 :80 (http) 로 바인딩 되어 있을 것이다. 해당 항목을 오른쪽 클릭 - 바인딩 메뉴를 누르자.

 

 

편집(E) 를 눌러 IP 주소 항목에 127.0.0.1 을 작성하고 확인한 후, 사이트를 재시작하거나 IIS 를 재시작하면 문제는 해결된다.

 

 

hosts 파일 수정 :

hosts 파일을 찾아서 localhost 를 127.0.0.1 로 대응시켜주는 구문을 넣어주면 된다. 아래의 구문을 참고한다.

127.0.0.1       localhost  

 

 

설정

트랙백

댓글