몇 년 동안 $_SERVER['SERVER_ADDR']
이 127.0.0.1과 같거나 비어 있는지 검사하여 페이지가 로컬 또는 원격으로 호출되었는지 확인하는 방법을 사용했습니다. . 이것은 this 및 this과 같은 다른 질문에서 논의되었습니다. $_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. 같은,하지만 파일 시스템을 타격 너무 많은 일처럼 보입니다.
미리 감사드립니다.
해당 환경 변수를 정의하십시오 (귀하의 아파치 가상 호스트 설정에서) – zerkms