2010-06-10 3 views
3

문서 루트를 사용하여 작동하지 않는 절대 경로를 제공하고 있습니다. 내가이 경로를 되풀이하면 C : wamp/www/proman/header.php가됩니다. 나는 상대 경로를 제공한다. 문제는 무엇인가?

$path = $_SERVER['DOCUMENT_ROOT']."proman/header.php"; 

여기 내 문제를 자세히 설명합니다. 나는 2 개의 PHP 파일 data_object.php와 user.class.php를 가지고 있습니다. user.class.php는 user.class.php와 관련된 data_object.php에 대한 include 문을 가지고 있습니다.이 두 파일은 서로 다른 디렉토리 계층에 있습니다. 이제이 User.class.php를 User() 객체를 만들 때 다른 계층 구조 아래에있는 다양한 파일 (예 : projects.php, links.php)에 포함시켜야합니다. 문제는 data_object.php 파일 포함에 대한 상대 경로는 projects.php에 대해서는 작동하지만 links.php를 열면 user.class.php의 data_object.php 파일을 열 수 없다는 오류 메시지가 표시됩니다. 나는 data.object.php를 상대적으로 포함시키기 위해 user.class.php가 포함 된 파일의 경로를 고려하고 있다고 생각합니다. 하나 이상의 시나리오에서 이러한 문제가 발생합니다. 디렉토리 구조를 그대로 유지해야하지만 중첩 된 포함을 사용하여 작업하는 방법을 찾아야합니다. 현재 WAMP 서버에서 실행 중이지만 완료 후 도메인에서 솔루션을 호스팅해야합니다. Pls help

+1

'C : wamp/www/proman/header.php'가 올바르지 않습니까? 'DOCUMENT_ROOT'이 당신에게 무엇을 기대합니까? – ceejayoz

+0

그것의주는 C : wamp/www/ – aeonsleo

+0

당신의 질문은 오히려 불분명하다. HTML로 사용할 수있는 경로가 필요하십니까? 그렇다면,'DOCUMENT_ROOT'는 쓸모가 없습니다. 당신은'REQUEST_URI' 나'SCRIPT_NAME' 같은 것을 원할 것입니다. – ceejayoz

답변

6

서버 변수이므로 실행중인 웹 서버 (특히 IIS)에 따라 또는 뭔가 이상하게 구성되어 있는지 여부에 따라 서버 변수가 표시 될 수도 있고 표시되지 않을 수도 있습니다.

이 문제를 해결하는 한 가지 방법은 으로 변수을 설정하는 것입니다.

$_SERVER['DOCUMENT_ROOT'] = "C:/some/absolute/path"; 
// or, if you put this code in a file that's in your document root: 
$_SERVER['DOCUMENT_ROOT'] = dirname(__FILE__); 

그런 다음 중 하나를 수행 할 수 있습니다 require() 문서 루트를 확인하거나 자동으로 파일을 포함하도록 auto_prepend_file php.ini의 옵션을 사용하기 위해 필요한이 파일.

실제로 URL을 만들려고하는 경우 절대 URL (/proman/header.php) 또는 상대 URL (../proman/header.php) 만 지정하면됩니다.

5

내 경험상 $_SERVER['DOCUMENT_ROOT']에는 후행 슬래시가 없습니다. 시도해보십시오 :

$path = $_SERVER['DOCUMENT_ROOT'].'/proman/header.php'; 
관련 문제