'2017/02/20'에 해당되는 글 1건

728x90

현재 경로 설정을 매번 수동으로 일일이 지정하려니까 귀찮아서 구글링으로 찾은 소스를 수정해서 구현했다.

구글에서 찾은 함수 pathUrl 는 http://localhost/ 라는 명칭을 찾아준다.

이런 방법으로 경로를 지정하면 보안 강화로 인해서 url forwarding 문제가 생긴다.


파일을 include 해서 사용하다보니 경로 설정에서 문제가 생기더라.

현재 실행되는 파일의 위치를 기준으로 경로를 인식해서 처리한다.

그러므로 홈페이지의 소스가 설치된 기준 위치를 어디로 정할 것인가를 고려해서 사용하면 된다.


<?php
$cur_root = pathUrl();
$g = array(
    'path_root'   => $cur_root,
    'path_core'   => $cur_root.'_core/',
    'path_config'   => $cur_root.'_core/config/',
    'path_tmp'    => $cur_root.'_tmp/',
    'path_layout' => $cur_root.'layout/',
    'path_module' => $cur_root.'modules/',
    'path_plugin' => $cur_root.'plugin/',
    'path_bootstrap' => $cur_root.'plugin/bootstrap/',
    'path_page'   => $cur_root.'pages/',
    'path_file'   => $cur_root.'files/'
);

function pathUrl($dir = __DIR__){
    $root = "";
    $dir = str_replace('\\', '/', realpath($dir));

    //HTTPS or HTTP
    $root .= !empty($_SERVER['HTTPS']) ? 'https' : 'http';

    //HOST
    $root .= '://' . $_SERVER['HTTP_HOST'];
    $web_root = $root;

    //ALIAS
    if(!empty($_SERVER['CONTEXT_PREFIX'])) {
        $root .= $_SERVER['CONTEXT_PREFIX'];
        $root .= substr($dir, strlen($_SERVER[ 'CONTEXT_DOCUMENT_ROOT' ]));
    } else {
        $root .= substr($dir, strlen($_SERVER[ 'DOCUMENT_ROOT' ]));
    }

    $root = substr($root,strlen($web_root),strlen($root));
    //$root .= '/';

    // 홈페이지 기준점을 http://domain/abc/ 로 설정한 경우에는 -2 를 해준다.
    $cnt = count(explode("/",$root)) -2; // 현재 경로 구하기

    switch($cnt){  // 상대경로 설정
        case 0:
            $cur_root = './';
            break;
        case 1:
            $cur_root = '../';
            break;
        case 2:
            $cur_root = '../../';
            break;
        case 3:
            $cur_root = '../../../';
            break;
        case 4:
            $cur_root = '../../../../';
            break;
        case 5:
            $cur_root = '../../../../../';
            break;
    }

    return $cur_root;
}
?>



사용법 예제

<?php
if(!isset($_SESSION)) {
    session_start();
}
require_once 'path.php';
session_save_path($g['path_tmp'].'session');

require_once $g['path_config'].'dbconnect.php';
require_once $g['path_config'].'config.php';

if(isset($_SESSION['userid'])){
    $userid = $_SESSION['userid'];
}

$m = isset($_GET['m'])? $_GET['m']:'';
?>

블로그 이미지

Link2Me

,