2013-05-09 1 views
1

에 바로 가기를 구분 파일을 읽고, 각 파일에 대해 실행 통계 등 크기를 결정하지 않는PHP의 lstat는 명령은 내가 디렉토리를 열고 창에서 창

문제는 내가 실행할 때이다 통계를 폴더 SHORTCUT에, 그것은 다시 폴더로 돌아오고, 이것을 나타낼 수도 mode 비트 마스크를 볼 수 없습니다. 이는 모든 폴더 바로 가기가 c:\Documents and Settings\myUserName\ 인 경우에 해당됩니다. 이 바로 가기

, is_file 반환 false, is_dir 반환 trueis_link은 XP에서 지원되지 않습니다. 여기

(이것은 아래로 손질 된, 그래서 버그가있을 수 있습니다) 내 코드에서 발췌 한 것입니다 :

if(([email protected]($root))!==false){ 
    while (false !== ($file = readdir($h))){ 
     if(!($file=="." || $file=="..")){ 
      if($stat = @lstat($root . $file)){ 
       $ary[0] = $file; 
       $ary[1] = $root; 
       $ary[2] = Date("m/d/y H:i:s", $stat['mtime']); 
       if($stat['mode'] & 040000){ 
        $ary[3]="dir"; 
        $ary[4]=0; 
       }else{ 
        $ary[3] ="file"; 
        $ary[4] = $stat['size']; 
       } 
       echo(json_encode($ary)); 
      } 
     } 
    } 
} 

이에 대한 해결 방법을 이해할 수있을 것이다 ...

편집 : Winterblood의 솔루션 거의 작동했습니다.

첫 번째 - 내 나쁜 - 그것은 win7 기계입니다. 빠른 턴어라운드

감사 Winterblood는 -, 그러나 ...이 바로 가기의 여러 근무하고 PHP 매뉴얼은 단지를 말한다

C : \ 사용자 \ MyUserName 에다 \의 AppData \ 로컬 \ 응용 프로그램 데이터

(및 기타)은 여전히 ​​디렉토리로 돌아가는 반면 winSCP는 바로 가기를 바로 가기로 간주합니다. 실제로 '모드'는 040777이며 실제 폴더와 완전히 동일합니다.

다른 제안 사항이 있으십니까?

답변

1

PHP의 stat() 기능은 실제 링크가 아닌 링크 된 파일/폴더에 대한 세부 정보를보고하는 바로 가기/심볼 링크를 "추적"합니다.

링크 자체에 대한 통계 세부 정보는 lstat()을 사용하십시오.

자세한 내용은 the PHP documentation on lstat.

+0

열심히 - 내 코드에 'l'을 입력하고 천사의 종소리를 들었습니다. – alfadog67

+0

거의 만들었습니다 ... 현재 상황을 반영하여 원래 게시물을 조정했습니다. – alfadog67

+0

내가 아는 한 % LocalAppData %는 실제 폴더였습니다. lstat이보고하는 경우 실제 폴더이지만 WinSCP가 링크로보고하면 언어가 아닌 소프트웨어에 대해 더 많이 질문하게됩니다. –

관련 문제