2010-04-29 2 views
0

PHP를 다음과 같이 호출 할 때 $ _SERVER [ 'DOCUMENT_ROOT']가 반환하는 변수가 있는지 궁금합니다. ./somescript

그렇지 않은 경우 사람들이이 사건을 어떻게 극복합니까? 나는 웹 브라우저와 터미널에서 같은 스크립트 (템플릿 컴파일러)를 호출 할 수 있기를 바라고있다.

감사합니다. Matt Mueller

+0

* DOCUMENT \ _ROOT *는 웹 서버가 설정하는 환경 변수입니다. – Gumbo

+0

예. 그것이 설정되지 않은 이유입니다. – Matt

답변

3

나는이에 대한 getcwd() 명령을하지 않는 것이 좋습니다 에서). 작업 디렉토리는 PHP 구성에서 정의 할 수 있으며 아파치와 CLI 사이에서 다를 수 있으며, 일부 PHP 프레임 워크는 시작시 변경됩니다.

dirname(__FILE__)을 사용하면 아파치 또는 cli 컨텍스트 (창과 유닉스에서 작동 함)에서 항상 작동하며, 프로젝트 파일 내부를 이동해야하는 경우 상대 경로 만 사용할 수 있습니다.

+0

dirname (__ FILE__)은 DOCUMENT_ROOT와 동의어가 아닙니다. 그림 –

+0

은 작성하지 않았지만 프런트 컨트롤러 스크립트에서 실행하는 것으로 가정하고 문서 루트를 가져와 프로젝트의 다른 위치에서 실행하면 서버 경로에 의존하지 않고 문서 루트로 내려 가기 위해 상대 경로로 구문 분석 할 수 있습니다 – Benoit

-1

하드 코드 문서 루트가 포함되어 있습니다.
하드 코드 내가 (스크립트가 최고 일 경우)하거나 dirname (__FILE__)는 현재 디렉토리를 얻기 위해 getcwd 기능을 사용한다고 생각 항상 솔루션

+0

불행히도 코드를 배포하려고하기 때문에 실제로 옵션이 아닙니다. – Matt

+0

@Matt omg 배포. 설치 스크립트를 작성하면 문서 루트가 결정되고 하드 코드됩니다. 당신은 항상 상대 경로를 사용할 수 있습니다 –

+0

그냥 추가 : * 일부 구성이 필요합니다. – erisco

1

입니다. 그런 다음 DOCUMENT_ROOT에서 스크립트를 실행하기 만하면됩니다. 이런 식으로 뭔가 : 당신은 어디 cwd가 (당신이 이미중인 디렉토리를 알고 의미하는 당신이 chdir 전에했습니다 않는 가리키는 확신 할 수 없기 때문에

cd /var/www/ 
php ./scripts/top.php 
+0

흠. 나는이 일을 전에 시도했는데, 그 일이 항상 동일하지 않았기 때문에 그것이 효과가 없었던 것으로 확신한다. 그것은 이것이 나의 유일한 선택일지도 모른다 것처럼 보인다. 감사! – Matt

+0

스크립트를 실행하기 전에 필요한 dir에'cd'를했는지 확인해야합니다. –

+0

질문은 필요한 디렉터리를 결정하는 방법입니다 –

관련 문제