common.php 경로 문제

common.php 경로 문제

QA

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 를 서브 폴더에도 똑같이 루트에서 복사해와서 붙여 넣은 뒤에 include_once('./_common.php');
이렇게 해야지 제대로 되는것이 맞는건가요 제가 제대로 이해한 것이 맞는건가요오
저는 현재 루트상에만 _common이 존재하고 서브에는 복사를 안해왓거든요

하... 그누보드 멍청이지만 잘하고 싶네요

다른건 신경쓰실필요없이 _common.php 파일 위치를 기준으로 보시면되는데요.

루트에서 sub폴더로 복사해오시고나서 _common.php 파일을 열어보시면

<?php
include_once('./common.php');
?>

되어있을거에여.

./ 는 동일폴더내에 있다는건데요 현재 common.php 파일은 sub폴더상위에 있는거잖아여.
그럼 저 경로로 가면 해당 파일이 없으면 당연히 오류가 나겠져.
맞는 경로인 상위폴더로 가라는 ../ 로 수정하셨어 해당 파일을 찾을 수 있게 수정해주시면 되는 것입니다.


<?php
include_once('../common.php');
?>

이렇게여.

와우 단박에 이해 했어요!! 고맙습니다아
제가 사실 로그인 로그아웃 문제 때문에 위와 같은 문제점을 겪은건데요
------------------------------------------------------------------------------------
<? if (!$member['mb_id']) { ?>
                <li class="member">
                    <a href="http://lvyh486.dothome.co.kr/bbs/register.php">Sign up</a>
                </li>
                <li class="member">
                    <a href="http://lvyh486.dothome.co.kr/bbs/login.php">Login</a>
                </li>
<?}else{?>
<? if ($is_admin == "super") { // 관리자일때?>
<li class="member">
                    <a href="http://lvyh486.dothome.co.kr/adm">Admin</a>
                </li>
                <li class="member">
                    <a href="http://lvyh486.dothome.co.kr/bbs/logout.php">Logout</a>
                </li>
<?}else{//여기는 회원일때?>
<li class="member">
                    <a href="http://lvyh486.dothome.co.kr/bbs/member_confirm.php?url=register_form.php">Info</a>
                </li>
                <li class="member">
                    <a href="http://lvyh486.dothome.co.kr/bbs/logout.php">Logout</a>
                </li>
<?}?>
<?}?>
--------------------------------------------------------------------------------------
근데 여기서 드는 궁금점이 로그인 관련 정보를 common.php에서 관리한다는 것을 이번을 통해서 알게 되었는데요.
그런데 게시판이 삽입된 페이지에서는 저 common 파일을 불러오는 소스를 쓰지 않았는데도, 로그인 정보 값을 가지고 있더라고요.(게시판이 있는 페이지의 헤더에는 common을 불러오는 코드가 없어요)
이는 게시판이 삽입되있는 페이지에서는 그누보드 자체에서 알아서 common을 불러온다는 이야기인가요?

아니요 모든 페이지마다 상단 보시면 _common.php 파일을 불러오고있습니다.
게시판관련 bbs 폴더안에 board.php write.php 등 게시판관련파일을 열어보시면 상단에 있을꺼에요.
아마 보셨던 부분은 게시판 스킨인듯합니다.

서브페이지 자체에서 ../_common.php 하면 다시 그 상위에 있는 _common.php을 불러오겠죠.

상위에 있는 _common.php 에서는 ./common.php 코딩이 되어 있겟죠

 

최종경로가 ../common.php이렇게 되어야 하는데요.

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 31
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT