저의 경로사용예를 보여드리겠습니다. 딴지걸어주십시오...^^ > 그누3질답

그누3질답

저의 경로사용예를 보여드리겠습니다. 딴지걸어주십시오...^^ 정보

그누보드 저의 경로사용예를 보여드리겠습니다. 딴지걸어주십시오...^^

본문

흐미~ 경로때문에들 고생이 많으시군요.
여러차례에 걸쳐서 말씀드렸는데 반응이 없어서 제의견이 안좋은 가보다 하고 그냥있었는데...
저의 사용예를 보여드리겠습니다.
참고하실 분은 참고하시고 저는 문제를 발견 못했는데 문제가 있다고 생각하신분들은 답글주세요.
겸허히 받아들여서 수용하겠습니다....

그누보드에서의 환경설정은
config.inc.php
dbconfig.inc.php -- 설치시에 자동으로 만들어짐(맞는지...)
lib.inc.php
에서 관계를 하고 있더군요..

cofig.inc.php의 디렉토리설정 예
/*
**  디렉토리
*/
//를 여기추가했음
$dirname=str_replace( $_SERVER[DOCUMENT_ROOT], '' ,str_replace('\\','/', dirname(__FILE__)) );//윈도우계열에서 \으로 경로가 나오는문제를 해결
$cfg[url] = 'http://' .$_SERVER[HTTP_HOST]. $dirname;//보드의 설치 URL상의 경로
$cfg[root] = $_SERVER[DOCUMENT_ROOT]. $dirname;//보드의 설치 디렉토리

/////////////////////여기까지....

$cfg[dir_data]    = "data";
$cfg[dir_file]    = "$cfg[dir_data]/file";
$cfg[dir_session] = "$cfg[dir_data]/session";
$cfg[dir_member]  = "$cfg[dir_data]/member";   // 회원아이콘 저장 디렉토리
$cfg[dir_skin]    = "skin";
$cfg[dir_manage]  = "manage";
$cfg[dir_image]   = "image";

//lib.inc.php 의 예***********

// 상대 경로 -->이것이 아니라 절대경로로 변환되지요^^

require_once dirname(__FILE__) . "/config.inc.php";
if (!$reldir) {
    $reldir = "../board";
}
//-- 여기의 $reldir 이라는것이  그누보드에서는 전체적으로 인클루드시킬때나 하이퍼링크시킬때난 같이 사용을 하는데
//   이것은 인클루드시킬때와 하이퍼링크시킬때를 나누어 주어야 하지요...
// --그래서 저는 그누보드가 업데이트 되고 자꾸변하니까 손안대고 제가 추가하거나 새로 프로그래밍을 할때는
//   하이퍼링크시키려면  $cfg[url] 을쓰고
//   인클루드나  require 시키려면 $cfg[root] 를 씁니다....

//  그려면 실제 웹페이지를 읽으면 하이퍼링크는 http://www.dasir.com/board/xxx.php 이런식으로 하이퍼링크가
//   나타나겠죠?
// 그리고  인클루드시키면 /home/dasir/public_html/board/xxx.php 이런식으로 나타나구요...
___________________________________________________________________-------------------------------

이거 복잡하게 설명이 되지않았는지......--
그냥 간단하게 말씀드리면 두군데를 손보고 다음에 프로그래밍할때 $cfg[url]과 $cfg[root]를 그누보드의 설치된곳이라고
생각하고 프로그래밍하시면 그누보드가 어디설치되었는지 경로는 잊어버려도 상관이 없습니다.
어디에서나 그누보드를 사용하시려면 그누보드의 lib.inc.php만 인클루드 시키면 되니까요..
결론은

//config.inc.php에 두변수 추가
$dirname=str_replace( $_SERVER[DOCUMENT_ROOT], '' ,str_replace('\\','/', dirname(__FILE__)) );//윈도우계열에서 \으로 경로가 나오는문제를 해결
$cfg[url] = 'http://' .$_SERVER[HTTP_HOST]. $dirname;//보드의 설치 URL상의 경로
$cfg[root] = $_SERVER[DOCUMENT_ROOT]. $dirname;//보드의 설치 디렉토리

//lib.inc.php에서 한문구 추가
require_once dirname(__FILE__) . "/config.inc.php";

이상을  하시고
다음부터는
$cfg[url], $cfg[root]
이 두녀석만 기준으로 프로그래밍을 하면되지요..

---------------------------------------------
이상은 제생각이며 제경우에 이런식으로 사용하고 있습니다.
가능하시면 딴지를 많이 걸어주시면 감사하겠습니다.........
  • 복사

댓글 전체

답변 고맙습니다.
이제 이해는 갑니다. 그런데 사용은 못할것 같네요...
관리자님이 좀 추가 해서 배포 해주시면 고맙겠습니다..
암튼 여러분들 고생 많으시네요....
꾸벅.
참 str_replace('\\','/', dirname(__FILE__)) 이 빠졌군요..
str_replace 는 해당문자열이 있는 것을 지정한 문자(열)로 바꾸어 주는 함수입니다.
위 내용이 들어가는 까닭은 윈도우계열에 php가 설치되어있는 경우에 경로명이 / 으로 안나오고 \으로도 표현되는것을
/으로 통일되게하려는 거죠. 이것은 환경에서 설정하는 것에 따라 다르게 나올수있어서 일관성있게 바꿔준것입니다...

늦은 시간까지 안주무시고 글을 쓰셨군요 .. 피곤하시겠네요?^^
cfg[url] = 'http://'.$_SERVER[HTTP_HOST].'/' . dirname(__FILE__);//보드의 설치 URL상의 경로
$cfg[root] = $_SERVER[DOCUMENT_ROOT].'/' . dirname(__FILE__);//보드의 설치
이것은 잘못되어서 수정하였습니다.
$dirname=str_replace( $_SERVER[DOCUMENT_ROOT], '' ,str_replace('\\','/', dirname(__FILE__)) );
$cfg[url] = 'http://' .$_SERVER[HTTP_HOST]. $dirname;
$cfg[root] = $_SERVER[DOCUMENT_ROOT]. $dirname;
으로...
그리고 이것을 적용하려면 php에 대해서는 기초를 알아야 이해를 할수있습니다...
설명을 드리자면 $_SERVER[HTTP_HOST] 은 현재 그누보드가 설치되어있는 서버의 호스트명입니다..
만약 여기 http://sir.co.kr 이라면 sir.co.kr 로 나옵니다.
그리고 $_SERVER[DOCUMENT_ROOT]  은 현재 그누보드가 설치되어있는 서버계정의 루트입니다..
그리고 dirname()은 디렉토리명을 알아내는 함수입니다.
그리고 __FILE__ 은 현재의 파일명을 나타내는 상수입니다..
그래서 dirname(__FILE__)이라면 이문구가 들어가 있는 파일의 디렉토리가 되는것 입니다.
뭐 복잡할것도 없이 간단하고 기초적인것입니다.

답변이 되었는지요?
답변 감사합니다..그런데.....이해가 안가네요. 밑에보면 보드 설치 url 상의 경로를 넣고 보드 설치디렉토리를
넣으라고 했는데 $cfg[url] 이곳의 url 글씨 빼고 이곳에 넣어야 하는지 아님
dirname(__FILE__);//이곳의 file일 글씨지우고 파일 글씨에 넣어야 하는지................암튼  넣어봐도 안되더군요..
암튼 감사합니다.
다른분 자세히 알려주실분 안계시나요?
--------------------------------------------------------------------------------------------
$cfg[url] = 'http://'.$_SERVER[HTTP_HOST].'/' . dirname(__FILE__);//보드의 설치 URL상의 경로
$cfg[root] = $_SERVER[DOCUMENT_ROOT].'/' . dirname(__FILE__);//보드의 설치 디렉토리
을 넣어주시고
---------------------------------------------------------------------------------------------------

에궁 몰겄다............머리가..
경로문제의 가장 이상적인 답인거 같네요... ^^
쓸데없이 소스의 이부분 저부분을 건드릴 필요도 없고....대단하십니다.
정말 쓸모있는 팁인거 같습니다. [팁앤테크]에 올려놓으세요~~~~~

잘 사용할께요...고맙습니다.
헐 오류가 있었네요.. $dirname을 전 직접적어서 사용하다가 모든사람이 그냥사용할수있게 하려하려고 잠오는걸참고 글을 올렸더니 수정합니다....

$dirname=str_replace( $_SERVER[DOCUMENT_ROOT], '' ,str_replace('\\','/', dirname(__FILE__)) );//윈도우계열에서 \으로 경로가 나오는문제를 해결
$cfg[url] = 'http://' .$_SERVER[HTTP_HOST]. $dirname;//old홈 URL
$cfg[root] = $_SERVER[DOCUMENT_ROOT]. $dirname;//old홈 URL
기술적인 부분이라 잘 모르겠지만 좋은 대안을 제시해 주신 것 같습니다.
관리자님도 이 방식을 검토해 보시고 장단점을 테스트 해보시면 좋을 듯합니다.
config.inc.php의 상단에
$cfg[url] = 'http://'.$_SERVER[HTTP_HOST].'/' . dirname(__FILE__);//보드의 설치 URL상의 경로
$cfg[root] = $_SERVER[DOCUMENT_ROOT].'/' . dirname(__FILE__);//보드의 설치 디렉토리
을 넣어주시고
lib.inc.php 에
----------------------------이것--
if (!$reldir) {
    $reldir = "../board";
}-------------------------여기까지
대신에 require_once dirname(__FILE__) . "/config.inc.php"; 을 넣으시고
require_once "$reldir/config.inc.php";은 지워주시면 됩니다.

답변이 되었는지요?  ......

그리고 잘모르시겠다면 위사항은 시험적으로만 하시고 나중에 정식버젼이 올라왔을때 사용하면 좋겠네요...
안녕하세요.
초짜라서 그러는데요. 위경로 를 예를 들어 http://sir.co.kr를 예로 해서 해주시면 어떠신지요.
아래사항중  정확히 어느곳에 넣어야 하는지요. 잘모르겠네요........그럼 부탁합니다.

//를 여기추가했슴
$cfg[url] = 'http://'.$_SERVER[HTTP_HOST].'/' . dirname(__FILE__);//보드의 설치 URL상의 경로
$cfg[root] = $_SERVER[DOCUMENT_ROOT].'/' . dirname(__FILE__);//보드의 설치 디렉토리
/////////////////////여기까지....
좋은 글입니다. 아~경로. (관리자님글) 마지막에 제가 언급한 부분과도 일맥상통하는군요.
아주 핵심적인 이야기를 거론하셨네요. 경로의 문제중 90%이상이 이 lib.inc.php와 관련된 에러지요
아주 좋은 예가 되어주는군요. 제가 사용하는방법을 위와 같이 하면 서버상의절대경로가(설치디렉)가 각기 다른
호스팅회사에서도 바로바로 적용되니 더욱더 발전된 형태가 되겠군요.
아주 좋은 예가 될거 같습니다.
© SIRSOFT
현재 페이지 제일 처음으로