2014-01-06 3 views
0

몇 년 동안 $_SERVER['SERVER_ADDR']이 127.0.0.1과 같거나 비어 있는지 검사하여 페이지가 로컬 또는 원격으로 호출되었는지 확인하는 방법을 사용했습니다. . 이것은 thisthis과 같은 다른 질문에서 논의되었습니다. $_SERVER['REMOTE_ADDR']과 같은 다른 superglobals도 자주 언급됩니다.스크립트가 dev 서버 또는 prod 서버에서 실행 중인지 확인하는 더 나은 방법

시간이 지남에 따라이 접근법이 실패하는 것으로 나타났습니다.

정말로 알고 싶은 것은 내 dev 서버 (xampp, wamp, IDE 디버거 ...) 또는 프로덕션 서버에서 스크립트가 호출되었는지 여부입니다. 이것은 웹 루트 위의 스크립트에 대한 경로를 올바르게 설정할 수 있도록하기위한 것입니다. 이 작업은 99.999 %의 시간 동안 진행되지만 때때로 Apache가 404 페이지로 리디렉션 할 때 $_SERVER['SERVER_ADDR']을 잃어 버리고 프로덕션 서버에서 실행되는 스크립트가 "로컬"테스트를 통과하는 것으로 보입니다.

그 결과 다른 접근법을 찾고 있습니다. 물론 내가 아파치에서 뭔가 잘못하고있을 수 있습니다,하지만 상관없이, 그것은 PHP에서 절대 안전한 테스트를하는 것이 좋을 것입니다.

나에게 몇 가지 아이디어가 나왔습니다. 그리고 이것이 안전한지, 아니면 더 나은 아이디어가 있는지 궁금합니다.

A. 하나의 아이디어는 현재 경로 보는 것입니다 : 또 다른 아이디어는 특정 이름을 가진 로컬 파일의 존재를 확인하는 것입니다

define ('DEV_SERVER', 

      (substr(

        strtolower($_SERVER['DOCUMENT_ROOT']), 

        0,8) 

      =="c:/xampp") 
); 

B. 같은,하지만 파일 시스템을 타격 너무 많은 일처럼 보입니다.

미리 감사드립니다.

+0

해당 환경 변수를 정의하십시오 (귀하의 아파치 가상 호스트 설정에서) – zerkms

답변

0

gethostname()을 시도해 볼 수도 있습니다.

하지만 가장 좋은 방법은 dev 전용 서버를 dev 서버에만 배포하는 것입니다. 나는. 해당 스크립트를 제작/회귀 테스트 스크립트와 분리하여 보관하십시오. 이 DEV 서버 특정 항목이 실수로 사용자에게 표시되는 것을 원하지는 않습니다.