2012-09-11 2 views
6

나는 루트 디렉토리로 돌아가는 더 좋은 방법을 배우려고하고있다. $ _SERVER를 사용하는 것이 가장 안전한 방법이 아니라고 들었습니다. 임이 더 좋은 방법이 있는지 궁금해합니다. 그래서 나는이 URL을 example.com/exp/my.php에서 얻을 수있다.

내가 가지고있는 것이있다.

include ($_SERVER['DOCUMENT_ROOT'].'/cpages/cmain/func/init.php'); 
include($_SERVER['DOCUMENT_ROOT'].'/cpages/toppart.php'); 
include($_SERVER['DOCUMENT_ROOT'].'/cpages/boxes/image.php'); 
include($_SERVER['DOCUMENT_ROOT'].'/cpages/bottonpart.php'); 

나는

define ('DOCUMENT_ROOT', dirname(__FILE__)); 
include (DOCUMENT_ROOT.'/cpages/cmain/func/init.php'); 
include(DOCUMENT_ROOT.'/cpages/toppart.php'); 
include(DOCUMENT_ROOT.'/cpages/boxes/image.php'); 
include(DOCUMENT_ROOT.'/cpages/bottonpart.php'); 

로 변경하지만 지금은 나에게 그것을 해결하는 방법이 그 것이다 나에게 그것을 그 오류를 준하지 않았다

Warning: include(C:\xampp\htdocs\backbone\image/cpages/cmain/func/init.php) 

($_SERVER['DOCUMENT_ROOT'] 오류를주고?

+1

['$ _SERVER'] (http://www.php.net/manual/en/reserved.variables.server.php)'[ 'DOCUMENT_ROOT']'이 (가) 안전하지 않은 이유는 무엇입니까? –

+3

이 질문보기 : http : // stackoverflow.com/questions/390276/how-to-programmatically-the-document-root-in-php –

+0

@JonathonReinhart 잘 모르겠지만 더 안전한 방법을 찾고있는 것이 더 좋다. –

답변

4

문제는 모든 종류의 값을 얻을 수 있으므로 $ _SERVER 배열의 모든 것에 의존 할 수 없다는 것입니다.

그래서 당신은 다음과 같은 규칙이 필요합니다 : 공공 코드를 작성, 설정 파일의 경로를 넣으면

  1. . 그런 다음 $ _SERVER가 사용자 서버에서 올바르지 않으면 덮어 쓸 수 있습니다. 몇 가지 간단한 규칙 (아래 참조)을 사용하고 싶다면 DOCUMENT_ROOT을 사용하여 설정을 미리 완성하는 것을 도울 수 있습니다.

  2. 자신의 용도로 쓰는 코드가 서버 한 대 또는 두 서버 사이에서만 건너 뛰게 될 경우 DOCUMENT_ROOT이 올바른 것으로 가정하고 서버를 이동해야하는 경우 rwrite하십시오. 설정 변수를 사전 컴파일하는 경우


어떻게 기본 DOCUMENT_ROOT을 제공합니다.

  1. 아파치의 경우 CONTEXT_DOCUMENT_ROOT을 확인하십시오. DOCUMENT_ROOT은 거의 항상 안전합니다. 그러나 잘못 될 수있는 몇 가지 장소가 있습니다. 귀하가 제공 한 링크의 경우입니다. 아파치가 mod_alias 또는 mod user_dir을 사용하는 경우. 이 경우 더 안전 한 CONTEXT_DOCUMENT_ROOT을 사용해야합니다. 그러나 아파치는 한 달 정도만 CONTEXT_DOCUMENT_ROOT을 추가 했으므로 최신 설치가 없으면 DOCUMENT_ROOT으로 되돌아 가야합니다.
  2. DOCUMENT_ROOT-
  3. 사용 PATH_TRANSLATED (이하 PHP_SELF의 길이가) 현재 작업 디렉토리 경로를 contruct하기 위해 위의 참조하십시오.
  4. SCRIPT_FILE_NAME (길이는 PHP_SELF 이하)을 사용하여 현재 작업 디렉토리에 대한 경로를 구성하십시오.
  5. 사용

그런 다음 현재 작업 디렉토리에 전역 변수 __DIR__ 당신이 그 세부 사항이있는 경우, 해당 디렉토리에 존재 알고있는 파일 확인 - 그것은 않는 경우, 당신은 아마 올바른 경로를 가지고 . 그렇지 않다면 다음 단계를 따라하십시오.

+0

감사합니다. –