2012-09-11 3 views
1

"위치"리디렉션 헤더와 관련된 악의적 인 IIS 버그로 인해 대신 "새로 고침"헤더를 사용해야합니다.IIS에서 PHP 스크립트가 실행 중인지 확실하게 감지

그래서 PHP 스크립트가 IIS에서 실행되는지 프로그래밍 방식으로 감지하는 가장 좋은 방법을 알고 싶습니다.

현재 사용되는 방법은 DIRECTORY_SEPARATOR !== '/'이지만 분명히 Windows에서 Apache 및 다른 서버는 IIS로 올바르게 인식되지 않습니다.

strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false

을 ...하지만이 요소는 HTTP 응답의 "서버"헤더에 해당하고,이를 다양한 방법으로 제거되었을 수 있습니다 :

나는 약 생각했다.

견고한 방법에 대한 아이디어가 있으십니까?

답변

1

http://www.helicron.net/php/에 따르면 IIS는 $ _SERVER [ 'DOCUMENT_ROOT']를 비워 두지 만 아파치는 그렇지 않습니다.

+0

그래, 나도이 기사를 발견했지만이 방법은 충분히 안전한가요? Apache 및 IIS 이외의 다른 서버는 어떻게 작동합니까? 최신 (및 미래) IIS 버전이 여전히이 요소를 놓치고 있습니까? 또한, 기사는 날짜가 아니지만 꽤 오랫동안 작성된 것 같습니다. –

+0

나는 그것에 대해 전혀 몰라,하지만 난 그냥 웹 애플 리케이션 구성에서 현재 사용되는 웹 서버를 정의하는 간단한 변수에 갈 것입니다. –

관련 문제