2012-02-05 2 views
1
에게

내 사이트의 계층 구조는 다음과 같이 그대로를 지정하지 않으면 false를 반환과 같은 폴더 :PHP : is_dir() 예 : "./folder"나는 "../folder"

/ 
/webroot/ 
/webroot/index.php 
/webroot/images/foo.jpg 

내가이 없습니다 /에 대한 쓰기 권한을 가지고 있지만, /webroot 내에있는 모든 것에 대해 수행합니다.

var_dump(is_dir('./images/frontpage')); 
var_dump(is_dir('images/frontpage')); 
var_dump(is_dir('/webroot/images/frontpage')); 
var_dump(is_dir('.\images\frontpage')); 

그들은 모두 false를 반환합니다 내가이 명령 중 하나가 index.php를 내
지금 말한다. webroot\index.php 내에서 내가 가진하지만 ...
var_dump(is_dir('../images')); 

은 ... 그들은 true을 반환합니다. 나는 명백한 것을 놓치고 있는가? 이 방법으로 작동해야합니까? 나는 이것을 이해하지 못한다.

하지만 :이 같은 경우 :

/ 
/webroot/ 
/webroot/index.php 
/webroot/images/foo.jpg 
/webroot/subfolder/index.php 

그런 다음 var_dump(is_dir('../images'));index.phpsubfolder/index.php

+1

음, index.php는 디렉토리 또는 파일입니까? 너는 그 둘을 암시하는 듯하다. –

+0

죄송합니다, 오타. 추가 정보로 수정되었습니다. – DavidR

+2

getcwd (http://php.net/manual/en/function.getcwd.php)를 사용해보십시오. 그러면 기본 디렉토리가 무엇인지 볼 수 있습니다. –

답변

1

모두 true를 반환합니다 당신이 /webroot/subfolder/에서 그들을 호출하는 경우 둘 다 true를 돌려줍니다.

...현재 작업 디렉토리에 따라 다릅니다. 을 /webroot/subfolder/some.php에서 호출하면 /webroot/subfolder/현재 작업 디렉토리이됩니다. 따라서 '../images'은 항상 디렉토리가되며 true를 반환합니다.

+0

그건 단지 문제입니다. 내가'/ webroot/subfolder/index.php'에서 is_dir ('../ images')'을 실행하면, 사실을 반환 할 것이라고 기대할 것입니다. 하지만 '/ webroot/index.php'에서 is_dir ('../ images ')'을 실행하면'/ images'를 찾고 있다고 생각 하겠지만 여전히 true를 반환합니다. 마치 현재 작업 디렉토리가'/ webroot /'의 하위 폴더 인 것처럼,'/ webroot'에서 직접 작업 할 때도 마찬가지입니다. 당신이 말한 것이 정확하고 그 사실을 이해하지 못했을 가능성이 큽니다 ... – DavidR

관련 문제