글
(PHP) $_SERVER['REMOTE_ADDR'] 이 ::1 을 반환할 때
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
'IT/Programming > PHP' 카테고리의 다른 글
(PHP) isset() vs empty() vs is_null() (0) | 2014.10.29 |
---|---|
[XE] 흰 페이지만 보일 때 && 1.5 버젼 이후 모듈 사용 주의사항 (0) | 2014.09.14 |
PHP 예전 버전 다운로드 (0) | 2014.04.04 |
(PHP) Cannot send session cache limiter - headers already sent (0) | 2013.06.09 |