본문 바로가기
개발

[PHP] include된 php 문서가 자신의 경로 파악하기

by 비손 2012. 2. 2.
제목 부터가 조금 생소한 느낌일 수 있겠습니다.
php에서 가장 많이 쓰이는 함수 중 하나로 'include'를 꼽을 수 있을 것입니다. 혹은 'include_once'겠네요~

보통의 문서에서 $_SERVER['PHP_SELF']를 이용하면 문서 자신의 경로는 파악할 수 있습니다. 

 그런데 include된 문서 내에서 저 변수를 출력하면?? 외부 문서의 경로가 출력됩니다.

/a.php

echo $_SERVER['PHP_SELF'];
include("./dir/b.php"); 

 
/dir/b.php

echo $_SERVER['PHP_SELF'];

 
위와 같을 때, a.php 에서 출력해도 '/a.php' 라고 나오고 b.php에서 출력한 변수도 '/a.php'라고 나옵니다.

그럼 b.php에서는 자신의 경로를 알아내서 활용할 수 없는가?? 
아래의 함수를 이용하면 됩니다.(꼭 함수 형태로 이용할 필요는 없습니다.)

function get_curr_path() {

$arr = explode(realpath($_SERVER['DOCUMENT_ROOT']),dirname(__FILE__));

return $arr[1]."/";

}

 
거의 3시간에 걸쳐 고민하고 검색한 끝에 결국 찾진 못하고 만들어 낸 함수입니다.
혹시 더 좋은 방법이 있을지는 모르겠네요~

PHP5 이상에서만 작동할 수도 있겠습니다. 혹시 다른 방법 있다면 코멘트 부탁드려요 ^^

(참고!! 라이브러리 파일 같이, 다른 파일에 저 함수를 넣어두고 호출해서 쓰려고 시도하면 실패합니다. 해당 라이브러리의 위치를 가져오니까요~)