2012-03-06 2 views
0

포함하려는 PHP 응용 프로그램이 있지만 하위 디렉터리의 파일을 포함하려고하기 때문에 문제가 발생합니다. 예를 들어, 여기에 내가 함께 작업하기 위해 노력하고있어 (어느 정도) 디렉토리 구조는 다음과 같습니다현재 스크립트 이외의 기본 경로에서 PHP 스크립트를 포함하려면 어떻게해야합니까?

/site 
    /scripts 
     /local 
      some_script.php 
    lib_file_a.php 
    lib_file_b.php 
    lib_load.php 

lib_load.php 파일 lib_file_a.phplib_file_b.php (상대 경로)에 대한 include 명령이 있습니다.

lib_load.php부터 some_script.php까지 포함시키려는 것이지만 lib_load.php을 포함하는 방식에 문제가 있습니다. 처음에는 require('../../../lib_load.php');을 시도했습니다.

예상대로 'C : \ xampp \ htdocs \ site \ scripts \ local \ lib_file_a.php'열 필요 없음 오류가 발생했습니다. 보시다시피, PHP는 존재하지 않는 파일을 포함하려고합니다. 스택 경로 오버플로 게시물은 절대 경로 (link)을 사용하는 것에 대해 알려주었지만이 방법은 도움이되지 않았습니다. 다음으로이 코드를 시도 :

require(realpath(dirname(__FILE__) . '../../../' . 'lib_load.php')); 

그러나 이번에는 같은 오류가 다시 발생합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

편집 : 문제가 실제로 상대 경로가 아닌 절대 경로를 기반으로 파일을 포함하는 것으로 판명 된 라이브러리 로더에 있다는 것을 깨달았습니다. (나는 좀 더주의 깊게 읽어야했다.) 나는 라이브러리가 사용하는 경로를 변경함으로써이 문제를 해결했다. 이 질문은 MOD가이 요청을 보는 경우 닫아야합니다. 당신이 PHP 5.3 이상 사용을 사용하는 경우이 대신 (이 낫 네요)

require dirname(__FILE__) . '/../../../lib_load.php'); 

을 또는 :

답변

2

이 시도

require __DIR__ . '/../../../lib_load.php'); 
8

이 lib에 부하를 포함하려면

require $_SERVER['DOCUMENT_ROOT'] . '/scripts/lib_load.php'; 

내부 lib로드

require dirname(__FILE__) . '/lib_file_a.php'; 

문제가 제대로 발생하면

관련 문제