2014-01-14 2 views
0

안녕하세요, PHP의 scandir() 명령에 다음과 같은 문제가 있습니다. 프로젝트의 루트 폴더를 열어야합니다. 개념이 간단합니다. 루트 폴더를 열고 특정 매개 변수를 충족시키지 않는 모든 포함 폴더/파일을 지울 스크립트를 개발합니다. 불행히도 나를 위해 이것은 PHP에서 이루어져야합니다. 지금까지 나는PHP checkdir() 프로젝트의 루트 폴더를 엽니 다

$dir=scandir('..'.$_SERVER['REQUEST_URI']); 
foreach($dir as $i=>$val){ 
    if(is_dir($dir[$i])){ 
    $tmpDir=scandir('..'.$_SERVER['REQUEST_URI'].$dir[$i]); 
    } 
} 

와 함께 일한지하지만 난이 인 print_r 때()는 $ TMPDIR 난 내 프로젝트 (XAMPP/htdocs에 /)의 상위 폴더의 구조를 나타내는 배열을 얻을. 나는 $ _SERVER [ 'REQUEST_URI']가 루트 폴더의 이름을 얻는 올바른 방법이 아니라고 생각합니다. 스크립트가 루트 폴더의 이름을 다른 프로젝트에있는 것처럼 동적으로 가져 오는 것이 중요합니다. 내가 뭘 잘못하고 있고 다른 방식으로해야합니까?

답변

0

사용 __FILE__, 다음 예제와 /

폭발 : __FILE__의 출력됩니다 /home/cloud/public/index.php

: 내 스크립트에 기반으로합니다.

가 발생합니다 폭발 :

(
    [0] => 
    [1] => home 
    [2] => cloud 
    [3] => public 
    [4] => index.php 
) 

그런 다음 당신은 당신이 원하는 디렉토리를 잡아 그것의 이름을 얻을 수 있습니다. 를 얻을 수

public 

전체 스크립트를

$explode[count($explode)-2]

가 발생합니다 : 당신이하는 스크립트를 기반으로 폴더를 알고 싶다면

,이 같은 마지막 항목을 얻을 스크립트가있는 폴더의 폴더 이름 :

$explode = explode("/", __FILE__); 
echo $explode[count($explode)-2]; 
0

PHP 5.3을 사용하는 경우 __DIR__을 사용할 수 있습니다. 인 경우 < 5.3

관련 문제