Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP에서 서버 IP 주소를 확인하는 방법 완벽 가이드

PHP로 웹 애플리케이션을 개발하다 보면 현재 서버의 IP 주소나 포트 번호를 알아내야 하는 경우가 자주 발생합니다. 예를 들어 로깅 시스템 구축, 라이선스 검증, 서버 환경에 따른 조건 분기 처리 등이 대표적인 활용 사례입니다. 이번 글에서는 PHP에서 서버 IP 주소와 포트를 확인하는 다양한 방법을 소개합니다.

1. $_SERVER 슈퍼글로벌 변수 사용하기

가장 간단하고 널리 사용되는 방법은 PHP의 $_SERVER 슈퍼글로벌 변수를 활용하는 것입니다. 서버의 IP 주소는 아래 한 줄의 코드로 확인할 수 있습니다.

$_SERVER['SERVER_ADDR'];

마찬가지로 현재 웹 서버가 사용 중인 포트 번호도 아래 코드로 손쉽게 얻을 수 있습니다.

$_SERVER['SERVER_PORT'];

참고: $_SERVER['SERVER_ADDR']은 웹 서버가 실행 중인 환경에서만 정상적으로 동작합니다. 반면 클라이언트(방문자)의 IP 주소를 알고 싶다면 $_SERVER['REMOTE_ADDR']을 사용해야 하니 두 변수를 혼동하지 않도록 주의하세요.

2. PHP 5.3 이상에서 gethostname() 함수 사용하기

PHP 5.3 버전부터는 gethostname()gethostbyname() 함수를 조합하여 서버의 IP 주소를 확인할 수 있습니다.

$host_addr = gethostname();
$ip_addr = gethostbyname($host_addr);

gethostname() 함수는 현재 서버의 호스트명을 반환하고, gethostbyname() 함수는 해당 호스트명에 매핑된 IP 주소를 조회해 줍니다.

독립 실행형 스크립트에서 유용한 방법

이 방법의 가장 큰 장점은 웹 서버를 거치지 않고 독립적으로 실행되는 CLI 스크립트에서도 정상적으로 동작한다는 점입니다. 크론(Cron) 작업이나 커맨드 라인에서 실행되는 배치 스크립트처럼 $_SERVER 변수가 채워지지 않는 환경이라면 위 코드를 사용하는 것이 안전합니다.

정리

  • 웹 요청 처리 중이라면 $_SERVER['SERVER_ADDR']로 서버 IP를, $_SERVER['SERVER_PORT']로 포트를 확인하세요.
  • CLI 환경이나 독립 실행형 스크립트라면 PHP 5.3 이상에서 제공되는 gethostname() + gethostbyname() 조합을 사용하세요.
  • 클라이언트 IP가 필요한 경우에는 $_SERVER['REMOTE_ADDR']을 사용해야 합니다.

실행 환경에 맞는 적절한 방법을 선택하면 어떤 상황에서도 정확하게 서버의 IP 주소를 확인할 수 있습니다.