2012-01-03 2 views
2

PHP에서 실행중인 서버에서 PATH_INFO가 활성화되어 있는지 확인하는 크로스 플랫폼, 크로스 웹 서버 방법이 있습니까?서버에서 PATH_INFO가 활성화되어 있는지 PHP로 확인하십시오.

$ _SERVER [ 'PATH_INFO']는 스크립트 뒤에 여분의 경로 세그먼트가있는 경우에만 채워지므로 예를 들어 요청이 /index.php에 대한 것일 경우 PATH_INFO가 활성화되었는지 여부를 확실히 알 수 없습니다.

답변

2

그런 아파치 설정 값을 얻기위한 정의 된 방법이 없다고 생각합니다. 마음에 오는

하나 개의 아이디어

http://current_site_domain/check.php/test 

check.php 것 출력 $_SERVER['PATH_INFO']file_get_contents()를 사용하여 요청을하고있다.

요청 결과가 "test"이면 PATH_INFO가 작동합니다. 물론

, URL을 여는 사용할 수 없기 때문에 로컬 도메인을 알 수 없기 때문에 장소에 방화벽, 등 등

되고 실패 가능성이 줄어 듭니다 또 다른 방법이 있기 때문에이, 실패 할 수 있습니다 사용 iframe :

<iframe src="/check.php/It%20works!"></iframe> 

당신이 이프 란 내부에 "작동"을 참조하면, PATH_INFO 작동합니다. 설치 절차에 유용 할 수 있습니다.

+0

PATH_INFO가 비활성화되어 있고 check.php 뒤에 여분의 세그먼트를 추가하면 fiel_get_contents()가 404 또는 500으로 실패하는 것으로 보입니다. –

+0

그리고 그것은 단지 내 설정일지도 모르지만, 나는 그 오류를 잡을 수없는 것 같아요, 아니면 그걸 서명으로 사용할 것입니다. –

+0

@에 file_get_contents를 추가하면 오류가 표시되지 않고 결과가 false이므로 지금은이 문제를 해결할 것입니다. –

0

$ _SERVER [ "PATH_INFO"]는 항상 사용 가능해야합니다. 그렇지 않으면 파일 이름과 쿼리 문자열 사이에 추가 정보가 없다는 것을 의미합니다.

+1

http://httpd.apache.org/docs/2.0/mod/core.html#acceptpathinfo –

+0

바로. "요청은 리터럴 경로에 매핑되는 경우에만 허용되므로 위의 예에서 /test/here.html/more와 같이 실제 파일 이름 뒤에 경로 이름 정보가있는 요청은 404 NOT FOUND 오류를 반환합니다. " AcceptPathInfo가 해제되어 있으면 스크립트가 실행되지 않습니다. (맞습니까?) – benesch

+0

사실과 좋은 지적이지만, OP의 질문은 그들이 AcceptPathInfo를 감지 할 수 있는지 여부입니다. 아마도 일부 설치 절차 또는 뭔가. –

관련 문제