루터디렉토리 구하는거

루터디렉토리 구하는거 조회수:142





워낙 단순하고 고수들이 많은 PHP School 에서 무슨 팁이라고 부를 수도 없겠지만..
초보로서 저보다 더 초보인 분들을 위해 간단한 루터 구하는 꽁수하나 올립니다.

리눅스를 기준으로 제작한 게시판을 윈도우의 APM 설치해서 테스트할 경우 웹계저의
루터(http://domain.com )가 아니라 웹 계정내에 따로 게시판용 디렉토리 board 를
만들어 그 곳에 게시판을 설치할 경우(http://domain.com/board )에는 디렉토리
구조차이로 에러가 나는 경우가 많습니다.
이럴 때 아래 함수(루틴?)을 이용하면 board 디렉토리의 경로를 쉽게 구할 수 있습니다.

$num = substr_count($REQUEST_URI, "/");
if ($num == 2)
$Root_Path = "./";
else {
for ($i = 2; $i < $num; $i++)
$Root_Path .= "../";
}


공통으로 인크루드해서 사용하는 파일( function.php 또는 lib.php...) 상단에 위 함수를
넣어주고, 다른 프로그램 파일 등에서 사용시에는..

include $Root_Path."admin/admin.php"

이런 식으로 $Root_Path 를 앞에 붙이고 다음에 루터로부터 원하는 파일의 위치와 이름을
차례로 적어주면 됩니다.

보시면 알겠지만 아주 간단하게 이 파일( function.php 또는 lib.php...)을 호출하고 있는
파일(즉, 실제 실행중인 프로그램 파일)의 웹 경로(REQUEST_URI)에서 슬래쉬(/)가
몇개나 있는지 검사해서 두 개 (/board/index.php) 라면 루터 디렉토리는 ./ 가 되고...
두 개 이상이면 증가하는 갯수만큼 ../ 를 반복 입력해주는 거죠.

만약 위 함수를 담고 있는 공통파일을 호출한 실제 실행중인 파일의 주소가
http://domain.com/board/bbs/list.php라면 / 가 세개(/board/bbs/list.php)므로 루터
디렉토리 이름($Root_Path)은 ../../ 가 됩니다.

$REQUEST_URI 는 PHP자체에서 제공하는 서버환경변수로 프로그램파일의 웹 주소에서
도메인 부분을 뺀 나머지 주소를 값으로 가집니다.
http://domain.com/board/bbs/list.php 라면..$REQUEST_URI => /board/bbs/list.php

REQUEST_URI 대신 다른 변수를 이용해도 되겠지만 아무래도 위 함수를 담고있는 프로그램
파일이 자체적으로 어떤 실행을 하기보다는 대부분 다른 프로그램파일의 실행에 인크루드
되어서 실행되는 경우가 많을 테니까 ..
_SERVER[PHP_SELF] 나 HTTP_SERVER_VARS[DOCUMENT_ROOT]등의 변수보다
더 적당한 것 같네요.(??)



크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2003/05/06 18:30 2003/05/06 18:30
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/12


블로그 이미지

- 홍반장

Archives

Recent Trackbacks

Calendar

«   2003/05   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Statistics Graph

Site Stats

Total hits:
238182
Today:
1299
Yesterday:
1352