2009-06-23 1 views
11

내가 작성합니다php includes 해당 문서에만 관련된 파일을 포함하는 방법이 있습니까? 내가 INC/footer.php를 포함하는 index.php 파일이있는 경우

include 'inc/footer.php'; 

을 내가 footer.php 안에 다른 파일을 포함 할 경우, 나는의 index.php에이 상대해야 파일 (그것을 포함하고있는 파일). 이것은 문제가되지 않을 수도 있지만 전체 다른 위치에서 index.php를 포함 시키려면 어떨까요?

절대 경로를 정의하거나 dirname (FILE)을 사용하는 것과 같이이를 달성하는 데는 여러 가지 방법이 있다는 것을 알고 있습니다.

이것은 항상 실제 문제가 아니 었습니다. 한 가지 방법이나 다른 방법으로 생각했기 때문에 항상 알아 냈습니다.하지만 PHP에서 작업을 정확히 포함시키는 방법을 항상 궁금해했습니다.

후드 아래에서 무슨 일이 벌어지고 있는지 설명 할 수 있습니까?

감사

답변

31

이 도움이 될 수 있습니다 : (http://php.net/manual/en/function.include.php에서)

파일을 포함위한 것입니다 먼저 각 include_path를 항목에 현재에 상대 디렉토리 에 다음 작업 디렉토리, 그리고에 대한 을 보았다 현재 스크립트의 예 : include_path가 라이브러리 인 경우 현재 작업 디렉토리는/www /이고, 사용자가 include/a.php를 포함하고 해당 파일에 "b.php"가 포함 된 이 있고 b.php 이/www/libraries에서 처음 보입니다./ 다음에/www/include /에 있습니다.

: 파일 이름 이 ./이나 ../로 시작하는 경우, 그것은 단지 현재 의 현재 작업 디렉토리 또는 부모에 각각

귀하의 질문 상태를 작업 디렉토리에 대한 을보고있다 footer.php 안에 다른 파일 을 포함시키고 자한다면, 나는 그것을 포함하고있는 인 index.php 파일을 기준으로 을 사용해야합니다.

이 true 인 경우에만 당신이 ./ 또는 ../include() 시작하려고하는 파일 경로. 상대 경로를 사용하여 현재 파일 위의 파일을 포함해야하는 경우, 당신은 (당신이 제안이) 사용할 수 있습니다 : 당신이 절대 경로를 정의하면

include(dirname(__FILE__) . '/../file.php') 

, 당신은 또한 현재이를 추가 할 수 있습니다 include_path :

set_include_path(get_include_path() . PATH_SEPARATOR . '/absolute/path'); 

'/ 절대/경로 /'를 기준으로 모든 포함을 수행 할 수 있습니다.

-2

답변을 찾는 가장 좋은 곳은 PHP 매뉴얼입니다.

http://php.net/manual/en/function.include.php

짧은 답변 : 경로가 더 하위에 포함하지 않는 실행 PHP 스크립트를 기준으로합니다.

함수에 전역 절대 경로를 설정하면 클래스 등의 폴더가 가장 좋은 방법입니다.

+0

ini 파일을 정의하거나 변경하여 설정할 수 있습니까? – 0plus1

+1

정의로 설정하는 것을 의미합니다. 예 : define ('CLASS_DIR', '/ path/to/classes /'); –

관련 문제