2012-04-27 2 views
1

현재 저는 PHP 프로젝트에서 작업하고 있습니다. 내 로컬 상자에 프로젝트 파일을 복사합니다. 그것은 한 가지를 제외하고는 잘 돌아갑니다. 여기 PHP에서 include_once 문제 포함

폴더 계층이다

<?php include ("event/admin/list.php"); ?> 

목록 그러나 list.php

포함되어야 다음은 index.php

root/index.php 
root/event/admin/list.php 
root/event/admin/functions.php 

, 광고가 .php, 줄이 있습니다 :

<?php include_once "event/admin/functions.php";?> 

list.php가 루트 디렉토리에 없기 때문에 event/admin/functions.php이 호출되지 않고 로컬 index.php이이 부분을로드하지 못합니다. 하지만 생산이 잘되고 있습니다.

무슨 일이 일어 났는지 아는 사람 있습니까? 그것은 include/include_once를 설정하는 방법이 $ _SERVER [ "DOCUMENT_ROOT"] 같은 것을 사용하지 않고 항상 ROOT 디렉토리를 사용합니까? 고마워.

답변

2

제 생각에는 $ _SERVER [ 'DOCUMENT_ROOT']을 사용하는 것이 좋습니다. 이 같은 수행 할 수

include_once($_SERVER['DOCUMENT_ROOT'] . "/path/to/file.php"); 

그러나이 함께 list.php 그는 코드를 교체해보십시오 :

<?php include_once "../../event/admin/functions.php";?> 

이 상대 경로와 관련된 알려진 문제입니다. 따라서 DOCUMENT_ROOT이 바람직합니다. 또는 include_path를 편집 할 수 있습니다.

+0

프로덕션 환경의 include_path는'include_path = "입니다 :/usr/lib/php :/usr/local/lib/php"'그게 무슨 뜻인지 아십니까? – Yuantao

0

이것은 상대 경로와 관련된 일반적인 문제입니다. 절대 경로에서 파일을 포함 시키거나 include_path in php.ini을 수정하여 문서 루트를 사용하고 파일을 상대 경로로 지정할 수 있습니다.

1

include path을 귀하의 문제에 유용하게 설정하십시오.

0

두 컴퓨터간에 include path 구성을 비교하십시오.