PHP에서 서버 IP 주소를 식별하는 방법
PHP에서 서버 IP 주소를 어떻게 식별 할 수 있습니까?
서버 ip에서 이와 같이 :
$_SERVER['SERVER_ADDR'];
이 포트에 대한
$_SERVER['SERVER_PORT'];
PHP 버전 5.3 이상을 사용하는 경우 다음을 수행 할 수 있습니다.
$host= gethostname();
$ip = gethostbyname($host);
이것은 웹 서버를 통해 실행되지 않고 독립형 스크립트를 실행하는 경우에 효과적입니다.
예를 들면 다음과 같습니다.
$_SERVER['SERVER_ADDR']
IIS를 사용하는 경우 다음을 시도하십시오.
$_SERVER['LOCAL_ADDR']
나는이 페이지에 와서 원격 컴퓨터 중 하나가 아닌 내 자신의 IP 주소를 얻는 방법을 찾고있었습니다.
Windows 시스템에서는 작동하지 않습니다.
그러나 누군가 내가 찾던 것을 검색하는 경우 :
#! /usr/bin/php
<?php
$my_current_ip=exec("ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'");
echo $my_current_ip;
( Linux 및 OS X에서 로컬 시스템의 기본 IP 주소를 얻는 방법 에서 뻔뻔하게 조정 되었습니까? )
가장 많이 투표 된 답변 중 어느 것도 서버의 공개 주소를 안정적으로 반환하지 않습니다. 일반적으로 $_SERVER['SERVER_ADDR']정확하지만 VPN을 통해 서버에 액세스하는 경우 공용 주소가 아닌 내부 네트워크 주소를 반환 할 가능성이 있으며 동일한 네트워크에 있지 않은 경우에도 일부 구성은 단순히 비어 있거나 다른 것으로 지정됩니다. 값.
마찬가지로 $host= gethostname(); $ip = gethostbyname($host);DNS (내부 구성 또는 외부 레코드)와 서버의 호스트 이름 설정을 모두 사용하여 서버의 IP 주소를 추정하기 때문에 올바른 값을 반환하지 않는 시나리오가 있습니다 . 이 두 단계는 모두 결함이 있습니다. 예를 들어, 서버의 호스트 이름이 도메인 이름 (예 HOSTNAME=yahoo.com:) 과 같은 형식 인 경우 (최소한 php5.4 / Centos6 설정에서) gethostbyname로컬 서버가 아닌 Yahoo.com의 주소를 찾는 것으로 바로 건너 뜁니다.
또한 gethostbyname공개 DNS 레코드로 localhost대체 되기 때문에 게시되지 않거나 잘못된 공개 DNS 레코드가있는 테스트 서버 (예 : IP 주소로 서버에 액세스 하거나 로컬 hosts파일을 사용하여 공개 DNS를 재정의하는 경우 ) IP 주소가없는 경우 (호스트 이름 만 반환) 공용 DNS 레코드에 지정된 잘못된 주소가 있거나 도메인에 대한 와일드 카드가있는 경우 더 나쁜 주소를 반환합니다.
상황에 따라 다음과 같은 방법으로 세 번째 방법을 시도 할 수도 있습니다.
$external_ip = exec('curl http://ipecho.net/plain; echo');
여기에는 고유 한 결함이 있으며 (특정 타사 사이트에 의존하며, 다른 호스트 또는 프록시를 통해 아웃 바운드 연결을 라우팅하는 네트워크 설정이 gethostbyname있을 수 있음) 느릴 수 있습니다. 솔직히 어떤 접근 방식이 가장 올바른지 잘 모르겠지만 특정 시나리오 / 구성은 이러한 모든 접근 방식에 대해 잘못된 결과를 초래할 것입니다 ... 가능한 경우 접근 방식을 확인하십시오. using은 예상 값을 반환합니다.
이것은 서버에 설치된 curl에 대해 걱정하지 않고 위 예제의 적응으로 사용할 수있는 것입니다.
<?php
// create a new cURL resource
$ch = curl_init ();
// set URL and other appropriate options
curl_setopt ($ch, CURLOPT_URL, "http://ipecho.net/plain");
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
// grab URL and pass it to the browser
$ip = curl_exec ($ch);
echo "The public ip for this server is: $ip";
// close cURL resource, and free up system resources
curl_close ($ch);
?>
$ _SERVER 배열을 확인하십시오
echo $_SERVER['SERVER_ADDR'];
bash 쉘에서 PHP를 사용하는 경우 다음을 사용할 수 있습니다.
$server_name=exec('hostname');
때문에 $_SERVER[] SERVER_ADDR, HTTP_HOST그리고 SERVER_NAME설정되어 있지 않습니다.
The previous answers all give $_SERVER['SERVER_ADDR']. This will not work on some IIS installations. If you want this to work on IIS, then use the following:
$server_ip = gethostbyname($_SERVER['SERVER_NAME']);
I just created a simple script that will bring back the $_SERVER['REMOTE_ADDR'] and $_SERVER['SERVER_ADDR'] in IIS so you don't have to change every variable. Just paste this text in your php file that is included in every page.
/** IIS IP Check **/
if(!$_SERVER['SERVER_ADDR']){ $_SERVER['SERVER_ADDR'] = $_SERVER['LOCAL_ADDR']; }
if(!$_SERVER['REMOTE_ADDR']){ $_SERVER['REMOTE_ADDR'] = $_SERVER['LOCAL_ADDR']; }
$serverIP = $_SERVER["SERVER_ADDR"];
echo "Server IP is: <b>{$serverIP}</b>";
You may have to use $HTTP_SERVER_VARS['server_ADDR'] if you are not getting anything from above answers and if you are using older version of PHP
I found this to work for me: GetHostByName("");
Running XAMPP v1.7.1 on Windows 7 running Apache webserver. Unfortunately it just give my gateway IP address.
Check the $_SERVER array
echo $_SERVER['SERVER_ADDR'];
Like this:
$_SERVER['SERVER_ADDR'];
참고URL : https://stackoverflow.com/questions/5800927/how-to-identify-server-ip-address-in-php
'Programing' 카테고리의 다른 글
| htaccess 액세스 제어 허용 원본 (0) | 2020.07.28 |
|---|---|
| Windows 및 Mac OS 모두에서 Python의 기본 OS 응용 프로그램으로 문서 열기 (0) | 2020.07.28 |
| 파일 또는 어셈블리 Microsoft.SqlServer.management.sdk.sfc 버전 11.0.0.0을로드 할 수 없습니다 (0) | 2020.07.28 |
| Rails에서-개행을로 변환하는 rails 방법이 (0) | 2020.07.28 |
| 중복 된 '콘텐츠'항목이 포함되었습니다. (0) | 2020.07.28 |