(수정2015.01.16) 그누보드5 상대경로 사용하기 ($g4['path']와 같은 경로) 정보
(수정2015.01.16) 그누보드5 상대경로 사용하기 ($g4['path']와 같은 경로)본문
팁이 되려나 모르겠습니다.
종종 g4용 스킨등을 g5에서 사용할때 생기는 문제때문에 적용해보았습니다.
common.php 에 g5_path() 함수가 있습니다.
return $result; 위쪽에 넣어주시고, 다른 G5_ 상수들처럼 G5_PATH2 를 사용하시면 됩니다.
<del>
//$result['path2'] = preg_replace('#/$#', '', str_repeat('../', count(explode('/', dirname($tilde_remove)))-1));
$result['path2'] = preg_replace('#[/\\\]$#', '', str_repeat('../', count(explode('\/', dirname($tilde_remove)))-1));
if($result['path2']) {
define('G5_PATH2', $result['path2']);
} else {
define('G5_PATH2', '.');
}
</del>
위의 부분은 엉망이었습니다;
제대로 테스트해보지 않고 올려서 죄송합니다.
수정본 다시 올립니다.
다만 domain/~userid 환경은 테스트를 못해봤습니다.
종종 g4용 스킨등을 g5에서 사용할때 생기는 문제때문에 적용해보았습니다.
common.php 에 g5_path() 함수가 있습니다.
return $result; 위쪽에 넣어주시고, 다른 G5_ 상수들처럼 G5_PATH2 를 사용하시면 됩니다.
<del>
//$result['path2'] = preg_replace('#/$#', '', str_repeat('../', count(explode('/', dirname($tilde_remove)))-1));
$result['path2'] = preg_replace('#[/\\\]$#', '', str_repeat('../', count(explode('\/', dirname($tilde_remove)))-1));
if($result['path2']) {
define('G5_PATH2', $result['path2']);
} else {
define('G5_PATH2', '.');
}
</del>
위의 부분은 엉망이었습니다;
제대로 테스트해보지 않고 올려서 죄송합니다.
수정본 다시 올립니다.
다만 domain/~userid 환경은 테스트를 못해봤습니다.
function g5_path()
{
$result['path'] = str_replace('\\', '/', dirname(__FILE__));
$tilde_remove = preg_replace('/^\/\~[^\/]+(.*)$/', '$1', $_SERVER['SCRIPT_NAME']);
$document_root = str_replace($tilde_remove, '', $_SERVER['SCRIPT_FILENAME']);
$root = str_replace($document_root, '', $result['path']);
$port = $_SERVER['SERVER_PORT'] != 80 ? ':'.$_SERVER['SERVER_PORT'] : '';
$http = 'http' . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ? 's' : '') . '://';
$user = str_replace(str_replace($document_root, '', $_SERVER['SCRIPT_FILENAME']), '', $_SERVER['SCRIPT_NAME']);
$host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
if(isset($_SERVER['HTTP_HOST']) && preg_match('/:[0-9]+$/', $host))
$host = preg_replace('/:[0-9]+$/', '', $host);
$result['url'] = $http.$host.$port.$user.$root;
// 그누보드5 상대경로 사용하기 ($g4['path']와 같은 경로). 2015.01.16.2.dusthand.
$path1 = $_SERVER['SCRIPT_FILENAME'];
$tmp1 = preg_match('#^'.$result['path'].'#', dirname($path1), $matches);
$tmp = preg_replace('#^'.dirname($path1).'#', '', $result['path']);
if(!$tmp1 && $tmp) { // 그누보드가 현재보다 하위디렉토리면 하위디렉토리명을 가져오기
$result['path2'] = preg_replace('#^/#', '', $tmp);
} else { // 그누보드가 현재 또는 상위디렉토리면 상위의 상대경로 가져오기
$tmp = preg_replace('#'.dirname($tilde_remove).'$#', '', dirname($path1));
$tmp = preg_replace('#'.$tmp.'#', '', $result['path']); // g5root 웹상대경로
if($tmp) { // g5root 웹상대경로가 있으면 tilde_remove의 앞에서 g5root 제거
$tilde_remove = preg_replace('#^'.$tmp.'#', '', $tilde_remove);
}
$tmp = explode('/', ($tilde_remove));
unset($tmp[0]);
$result['path2'] = preg_replace('#[/\\\]$#', '', str_repeat('../', count($tmp)-1));
}
if($result['path2']) {
define('LS_PATH', $result['path2']);
} else {
define('LS_PATH', '.');
}
return $result;
}
추천
0
0
댓글 6개
그렇게 하면 g4용 스킨을 g5에서 그대로 사용할 수 있다는 뜻인가요?
수정없이는 사용할 수 없고요..
보통 g4용스킨에 많이 사용되는 변수가 $g4['path']가 있는데 이걸 g5용으로 그대로 G5_PATH로만 바꾸면
이미지경로에도 들어가는경우 절대경로이기 때문에 배꼽으로 나오기 쉽습니다.
그런경우는 G5_URL을 쓰면 되긴 하지만 경우에 따라서 is_file()이나 file_exists()로 확인하는 경우에는 또 웹경로로 되어있으니 파일이 없다는 결과를 리턴해주어 원하는 결과가 안나올 수 있습니다.
그런경우 $g4['path']처럼 상대경로로 두가지 모두 대응하려고 하는 경우에 사용하려는 용도입니다.
보통 g4용스킨에 많이 사용되는 변수가 $g4['path']가 있는데 이걸 g5용으로 그대로 G5_PATH로만 바꾸면
이미지경로에도 들어가는경우 절대경로이기 때문에 배꼽으로 나오기 쉽습니다.
그런경우는 G5_URL을 쓰면 되긴 하지만 경우에 따라서 is_file()이나 file_exists()로 확인하는 경우에는 또 웹경로로 되어있으니 파일이 없다는 결과를 리턴해주어 원하는 결과가 안나올 수 있습니다.
그런경우 $g4['path']처럼 상대경로로 두가지 모두 대응하려고 하는 경우에 사용하려는 용도입니다.
친절한 답변 고맙습니다. 새해 복 많이 받으십시오.
로컬에서만 테스트하다보니 생각치 못한 문제가 생기는군요.
$result['path2'] = preg_replace('#[/\\\]$#', '', str_repeat('../', count(explode('\/', dirname($tilde_remove)))-1));
수정됐습니다.
$result['path2'] = preg_replace('#[/\\\]$#', '', str_repeat('../', count(explode('\/', dirname($tilde_remove)))-1));
수정됐습니다.
다시 수정됐습니다. ㅜㅜ
현재 g4 -> g5 업그레이드 중에 있습니다.
Warning: include_once(/lib/outlogin.lib.php): failed to open stream: No such file or directory in C:\xampp\htdocs\inc\top1.php on line 5
등 등 처럼 많은 파일이 경로를 못찾는데요.
말씀하신대로 작업하면 될까요?
즉 g4 경로를 g5로 바꿔버리면?
초보자기때문에 너무 어렵게 느껴집니다.. ㅜ.ㅜ
Warning: include_once(/lib/outlogin.lib.php): failed to open stream: No such file or directory in C:\xampp\htdocs\inc\top1.php on line 5
등 등 처럼 많은 파일이 경로를 못찾는데요.
말씀하신대로 작업하면 될까요?
즉 g4 경로를 g5로 바꿔버리면?
초보자기때문에 너무 어렵게 느껴집니다.. ㅜ.ㅜ