2009-11-08 4 views
0

로컬 컴퓨터에서 웹 사이트를 테스트하고 있으며 사이트를 업로드 할 때 경로를 작성하는 가장 좋은 방법은 무엇이 있을지 궁금합니다. 최종 위치로로컬 (Mac) 및 원격 서버 모두에서 작동하는 PHP 경로

일반적으로 나는 경로에 대해 약간 혼란스럽고, 많은 경우 작업 할 때까지 각 경로를 조정해야하므로 프로덕션 사이트에서 동일한 작업을 수행해야합니다.

언제 $_SERVER['DOCUMENT_ROOT']을 사용해야하는지 명확하지 않습니다. 예를 들어, 루트 아래에있는 스캔 할 디렉터리가 있습니다. 그렇다면 왜 "/ dirname"을 사용할 수 없습니까?

$dir = $_SERVER['DOCUMENT_ROOT'] . '/uploads'; //this works 
// $dir = "/uploads"; //this doesn't work 

if (is_dir($dir)) { 
    //do something.. 
} 

답변

1

나는 $_SERVER['DOCUMENT_ROOT']를 사용하지 않을 때는 분명 해요. 예를 들어, 의 경우 루트 아래에있는 을 검색하려는 디렉토리가 있습니다. 그렇다면 왜 내가 단지 "/ dirname"을 사용할 수 없습니까?

PHP 파일의 경로로 작업 할 때 루트 (/)는 파일 시스템의 루트이며 웹 사이트를 방문 할 때 얻을 수있는 루트가 아닙니다.

그래서 $dir = "/uploads";은 파일 시스템 루트를 제공합니다.

문제를 줄이려면 PHP 응용 프로그램의 루트를 지정하는 변수를 구성 파일에 선언하고 그 경로를 사용하십시오.

0

언급 한대로 '/ 경로'를 사용할 수없는 이유는 파일 시스템의 루트를 가리키고 있기 때문입니다.

그러나, 대신 루트를 정의하는 변수를 선언, 나는이 dirname(__FILE__)를 사용하는 것이 좋습니다 것은, 거기에서

. 호출하는 파일이있는 디렉토리의 전체 경로를 검색 파일 당신에게 상대 경로 정보를 추가하려면 원한다면 완전한 경로로 완전히 동적으로 끝납니다. 예를 들어

, 당신은 당신이 사용에 포함 할 파일 위의 디렉토리에있는 'header.php'파일을 포함하려면 : include(dirname(__FILE__) . '/../header.php');

그 아름다움은 PHP는 항상 자동적으로 슬래시를 호스트 OS에 필요한 디렉토리 분리 자로 변환하십시오.

0

응용 프로그램에 대한 절대 파일 시스템 경로를 설명하는 변수/상수를 정의합니다. 이런 식으로 뭔가 : 다음

$appDir = rtrim(str_replace('\\', '/', realpath(dirname(__FILE__))), '/'); 

이 기본 경로를 가지고 당신이에서 응용 프로그램의 파일을 처리 할 수 ​​있습니다

include $appDir.'/library/foo/bar.php'; 

아니면 심지어는 그 디렉토리 경로를 포함 변경 :

set_include_path($appDir); 
관련 문제