테스트 사이트 - 개발 중인 베타 버전입니다

common.php 경로 문제 채택완료

김태후니 8년 전 조회 8,181

저의 폴더 구성이

html/sub/sub01.php

이런 식으로 되있습니다.

 

근데 common.php 를 불러 오는 과정에서 오류가 발생합니다.

common.php 위치는 당연히 그누보드 처음 설치했을때 처럼 루트에 위치하고 잇습니다.

그래서 메인.php는 (메인은 루트 경로에 위치하고 있습니다.)

이렇게 하면 정상적으로 불러옵니다.

근데 똑같은 개념으로 생각해서 서브페이지에

../_common.php'); ?>

이렇게 하니 서브 페이지는 common.php를 찾을수 없다고 합니다.

그래서 header파일을 하나 복사해서 head.php라 명한뒤 그 안에다가

include_once("../common.php"); ?>

이렇게 하니 정상적으로 불러오더군요.

이유를 모르겠어요. 쓸데없이 헤더 파일을 하나 더 생성한 느낌이 드네요. 왜 저 서브페이지 자체에서 common.php를 불러오는 것에 실패하는 것일까요? 

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
레일즈
8년 전

루트상과 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'); 쓰시면 굳이 수정할 필요가 없게 되게되니깐요. 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

김태후니
8년 전
정성들여 써주신 답변을 여러번 읽고 생각해봤습니다
설마 _common.php 를 서브 폴더에도 똑같이 루트에서 복사해와서 붙여 넣은 뒤에 include_once('./_common.php');
이렇게 해야지 제대로 되는것이 맞는건가요 제가 제대로 이해한 것이 맞는건가요오
저는 현재 루트상에만 _common이 존재하고 서브에는 복사를 안해왓거든요

하... 그누보드 멍청이지만 잘하고 싶네요
레일즈
8년 전
다른건 신경쓰실필요없이 _common.php 파일 위치를 기준으로 보시면되는데요.

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

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

되어있을거에여.

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


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

이렇게여.
김태후니
8년 전
와우 단박에 이해 했어요!! 고맙습니다아
제가 사실 로그인 로그아웃 문제 때문에 위와 같은 문제점을 겪은건데요
------------------------------------------------------------------------------------
<? 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을 불러온다는 이야기인가요?
레일즈
8년 전
아니요 모든 페이지마다 상단 보시면 _common.php 파일을 불러오고있습니다.
게시판관련 bbs 폴더안에 board.php write.php 등 게시판관련파일을 열어보시면 상단에 있을꺼에요.
아마 보셨던 부분은 게시판 스킨인듯합니다.

댓글을 작성하려면 로그인이 필요합니다.

굿
8년 전

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

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

 

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

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

김태후니
8년 전
답변해주셔서 정말 감사합니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인