include_once 상대경로에 대한 질문입니다.
본문
/adm 폴더에 임의의 폴더인 temp 를 생성합니다.
그리고 /adm/temp 에 test.php 라는 파일을 생성합니다.
test.php 에서 아래와 같이 코드를 적용합니다.
<?php
$sub_menu = "910500";
include_once('../_common.php');
include_once('../admin.head.php');
include_once('../admin.tail.php');
?>
그런데 아래와 같은 에러가 뜹니다.
Warning: include_once(../common.php): failed to open stream: No such file or directory in /home/da170428/html/adm/_common.php on line 3
Warning: include_once(): Failed opening '../common.php' for inclusion (include_path='.:/opt/alt/php56/usr/share/pear:/opt/alt/php56/usr/share/php') in /home/da170428/html/adm/_common.php on line 3
Warning: include_once(G5_ADMIN_PATH/admin.lib.php): failed to open stream: No such file or directory in /home/da170428/html/adm/_common.php on line 4
Warning: include_once(): Failed opening 'G5_ADMIN_PATH/admin.lib.php' for inclusion (include_path='.:/opt/alt/php56/usr/share/pear:/opt/alt/php56/usr/share/php') in /home/da170428/html/adm/_common.php on line 4
에러의 경로에 실제 해당 파일이 존재하는데도 왜 위와 같은 에러가 뜨나요?
가끔 include_once 함수에서 상대경로로 파일을 지정하면 위와 같은 에러가 종종 떠서 이번 기회에 한번 질문해 봅니다..
경로를 어떻게 지정해야 해결이 될까요..
/adm 폴더와 /adm/temp 폴더의 권한은 0755 입니다.
답변 1
/adm/temp/_common.php
에서 /adm/_common.php 를 인크루드 하셨으면
/adm/_common.php 에서 ../_common.php 이렇게 상대경로로 인크루드일 경우 /adm 의 하위 디렉토리가 아닌 /adm/temp 의 하위 디렉토리를 선언하신게 되는겁니다.
<?php
$sub_menu = "910500";
include_once('../../common.php');
include_once(G5_ADMIN_PATH.'/admin.head.php');
include_once(G5_ADMIN_PATH.'/admin.tail.php');
?>
이렇게 선언하세요.