2015-02-07 2 views
0

아래 코드는 uploads/디렉토리를 읽어야합니다. 그러나 그는 항상 인 경우에도 디렉토리가 비어 있지 않다고 알려줍니다.PHP 코드는 항상 디렉토리가 비어 있다고 알려줍니다.

<?php 
    $dir = "uploads/"; 
    echo (count(glob("$dir/*")) === 0) ? 'Empty' : 'Not empty'; 
?> 

이 코드에 오류가 있습니까? 아니면 미쳐 가고 있습니까?

업데이트 된 코드

<?php 
    echo (count(glob("uploads/*")) === 0) ? 'Empty' : 'Not empty'; 
?> 

전체 페이지 코드 업데이트

<?php 
if (array_key_exists('error', $_GET)) { 
    echo '<div class="galleryError">That image could not be found, we&#39;re sorry!</div>'; 
} elseif (array_key_exists('unknownerror', $_GET)) { 
    echo '<div class="galleryError">There went something wrong</div>'; 
} else { 
    echo ''; 
} 

if ($handle = opendir('uploads/')) { 

    while (false !== ($entry = readdir($handle))) { 

     if ($entry != "." && $entry != "..") { 

      echo "<div class='imgbox'><a href='fullscreen.php?token=$entry'><img src='$submap$gallery$entry' class='boximg'></a><p class='boxname'>$entry<br /><a href='?view&token=$entry'><small>View this image</small></a></p></div>"; 
     } 
    } 

    closedir($handle); 
} 

// 위의 모든 노력하지만 우리가 작업을 거부 여기이 외로운 코드가 있습니다.

echo (count(glob("uploads/*")) == 0) ? 'Empty' : 'Not empty'; 
?> 
+0

glob 문에서'$ dir'을 그냥 바꾸면됩니다! ->'glob ("uploads // *")' – Rizier123

+0

당신이 카운트 물건을 꺼내 glob의 결과를 볼 때 어떻게됩니까? – geoffspear

+0

@ Rizier123 여전히 디렉토리가 "비어 있지 않다"는 것을 알려줍니다. –

답변

0

glob이 자동으로 실패합니다. 나는 왜 보통 관련 권한이라도 파일 시스템 액세스 와 함께, 당신을 말할 수 있지만, 다른 요인이있을 수 있습니다 - 그것은 심지어 기능은 서버 환경에 부분적으로 의존하는 문서를 말한다 ...

일부 시스템에서는 빈 일치와 오류를 구분할 수 없습니다.

false 반환하는 glob 오류가 - 그리고 count(false) === 1 (또한 문서화) 그래서 그들은 이러한 검사를 무시하면 더 깜짝 사람들이 혼란 상황으로 얻을입니다. 당신이 정말로 오류에 대한 상관 없어 경우에 당신은 그래서 예상대로 작동합니다 배열은 항상 count에 전달 보장, 인라인 거짓 체크를 만들기 위해 삼항 연산자 짧은 손을 사용할 수 있습니다

$isEmpty = count(glob("uploads/*")?:[]) === 0; 

여전히 디렉토리가 읽히지 않는다는 사실을 알기가 어렵습니다. 에 디렉토리에 파일이있을 때 glob 출력을 인쇄 해 보았습니까? 나는 그것이 또한 borked라고 상상할 것이다. 다음 인쇄는 무엇입니까? :

var_dump(is_readable('./uploads')); 

가 다음 경기의 출력 할 예상 작업 디렉토리를합니까? :

echo realpath('uploads'); 

참고 사용 var_dump 때 디버깅, 코멘트에 제안하지 print_r - 당신이 실제로 필요 등의 변수/타입/구조/참조에 대한 자세한 정보를 제공합니다. 요약


- 고려할 사항 :

무엇 OS는 서버에서 실행되고? 어떤 모드가 PHP에서 실행됩니까? SuPHP/FastCGI 또는 이와 유사한 컨텍스트에서 실행되고 있습니까?어떤 사용자가 ./uploads 디렉토리를 소유하고 있으며, 어떤 권한이 설정되어 있습니까?

관련 문제