2016-06-27 4 views
0

우리 중 일부는 예 : http://example.com/Script/index.php 등의 하위 디렉토리에 스크립트를 삽입하고 다른 일부는 루트 디렉토리 ex : http://example.com/index.php에 스크립트를 삽입하는 것을 선호합니다.스크립트가 하위 디렉토리에서 작동하는지 여부를 어떻게 알 수 있습니까?

스크립트가 하위 디렉토리에 있는지 여부를 아는 방법은 무엇입니까?

+0

URL 또는 파일 경로를보고 있습니까? 당신이 요구하는 것이 무엇인지 정말 모릅니다. 어쩌면 당신은'__DIR__'을 원할까요? –

+0

@Dagon : 사용자가 스크립트 파일을 하위 디렉토리에 추가했는지 또는 루트에 직접 추가했는지 여부를 프로그래밍 방식으로 알고 싶습니다. '__DIR__'에 대해서는이 작업에 적합하지 않습니다. –

답변

0

음, 상당히 간단해야합니다. __FILE__이 심볼릭 링크 일 경우 약간의 조정이 필요합니다.

$root = $_SERVER['DOCUMENT_ROOT']; 

/** 
* @var bool TRUE if current script is in DOCUMENT ROOT, FALSE otherwise. 
*/ 
$inRoot = __FILE__ == $root . DIRECTORY_SEPARATOR . basename(__FILE__); 

#OR 
$inRoot = dirname($_SERVER['SCRIPT_FILENAME']) == $_SERVER['DOCUMENT_ROOT']; 
+0

고마워요.하지만 불행하게도 두 경우 모두 같은 결과를 얻습니다. –

+0

그것은 나를 위해 작동합니다. 확실히 당신이 뭔가 잘못하고있는 것을 확신합니다. '$ _SERVER [ 'DOCUMENT_ROOT']'값을 본 적이 있습니까? 위 스크립트의 각 부분을 디버그 할 수 있습니까? 어쨌든, 당신이 요점을 가지고 있다고 생각합니다! ;) – felipsmartins

+0

'$ _SERVER [ 'DOCUMENT_ROOT']'='C :/Program Files (x86)/wamp/www' ,'__FILE__' ='C : \ Program Files (x86) \ wamp \ www \ script \ system \ Router.php'. –

0

... 또는 getcwd()를 사용해보십시오. 성공시 현재 작업 디렉토리를 반환하고 실패하면 FALSE를 반환합니다.

+0

고맙습니다. 그러나 getcwd()와 스크립트를 서브 디렉토리에 사용하면 결과는 C : \ Program Files (x86) \ wamp \ www \ script'이고, 루트에있는 스크립트가 결과가'C : \ Program Files (x86) \ wamp \ www'이면. 두 번째 결과에서 볼 수 있듯이 루트에있는 스크립트가 예상대로 결과가 false가 아니지만 –