common.php 경로 문제
본문
저의 폴더 구성이
html/sub/sub01.php
이런 식으로 되있습니다.
근데 common.php 를 불러 오는 과정에서 오류가 발생합니다.
common.php 위치는 당연히 그누보드 처음 설치했을때 처럼 루트에 위치하고 잇습니다.
그래서 메인.php는 (메인은 루트 경로에 위치하고 있습니다.)
<? include $_SERVER["DOCUMENT_ROOT"]."/inc/header.php" ?>
<?php include_once('./_common.php'); ?>
이렇게 하면 정상적으로 불러옵니다.
근데 똑같은 개념으로 생각해서 서브페이지에
<? include $_SERVER["DOCUMENT_ROOT"]."/inc/header.php" ?>
<?php include_once('../_common.php'); ?>
이렇게 하니 서브 페이지는 common.php를 찾을수 없다고 합니다.
그래서 header파일을 하나 복사해서 head.php라 명한뒤 그 안에다가
<? include_once("../common.php"); ?>
이렇게 하니 정상적으로 불러오더군요.
이유를 모르겠어요. 쓸데없이 헤더 파일을 하나 더 생성한 느낌이 드네요. 왜 저 서브페이지 자체에서 common.php를 불러오는 것에 실패하는 것일까요?
답변 2
루트상과 sub내에 _common.php 파일둘다 열어보시면
해당 폴더 위치에서 common.php 파일을 불러오게 상대경로로 잡혀 있습니다.
1. include_once('./_common.php'); 정상적인 이유는 제일 마지막에 하신
include_once("../common.php"); 랑 동일한 효과구여 상대적으로 그 위치에 파일이 존재하기때문에 정상적으로 작동합니다.
2. include_once('../_common.php'); 오류인이유는 해당위치에는 _common.php 파일은 존재하지만 안에 내용부분은 현재 파일에서 상대적 경로로서 맞지 않기때문에 오류가 일어나는 것입니다.
불러올때 include_once('./_common.php'); 이렇게 하시길 추천합니다.
include_once("../common.php"); 이렇게 불러왔을경우 나중에 파일이 폴더이동하거나 할경우 위치가 안맞으면 매번 수정해줘야 되지만 include_once('./_common.php'); 쓰시면 굳이 수정할 필요가 없게 되게되니깐요.
서브페이지 자체에서 ../_common.php 하면 다시 그 상위에 있는 _common.php을 불러오겠죠.
상위에 있는 _common.php 에서는 ./common.php 코딩이 되어 있겟죠
최종경로가 ../common.php이렇게 되어야 하는데요.