Проверьте, если папка пуста, выводит ошибку (PHP) - PullRequest
0 голосов
/ 20 июня 2011

У меня есть код, чтобы проверить, является ли каталог пустым, чтобы я мог выполнять действия, но этот простой код выдает ошибку:

Предупреждение: opendir (/Site/images/countries/abc/a/2.swf,/Site/images/countries/abc/a/2.swf) [function.opendir]: системе не удается найти указанный путь.(код: 3) в C: \ wamp \ www \ Site \ index.PHP в строке 374

Нет такого файла

function IsNotEmpty($folder){
$files = array ();
if ( $handle = opendir ( $folder ) ) 
{
  while ( false !== ( $file = readdir ( $handle ) ) )
   {
      if ( $file != "." && $file != ".." ) 
         {
            $files [] = $file;
         }
   }

    closedir ( $handle ); 
 }
 return ( count ( $files ) > 0 ) ? TRUE: FALSE; }



 $dir ="/Site/images/countries/abc/a/2.swf";

 if (IsNotEmpty($dir)==true) 
     {
         echo "There is no such file";
 }
  else
     {
         echo "The file exists!";
     };

Не знаюне понимаю, что здесь не так.Файл выходит из указанного каталога.

Ответы [ 4 ]

1 голос
/ 20 июня 2011

opendir для открытия каталогов, а не файлов: -)

Вы также можете попытаться временно добавить отладочные данные, чтобы увидеть, что происходит:

function IsNotEmpty ($folder) {
    $files = array ();
    if ($handle = opendir ($folder))  {
        echo "DEBUG opened okay ";
        while (false !== ($file = readdir ($handle))) {
            if ( $file != "." && $file != ".." ) {
                $files [] = $file;
                echo "DEBUG got a file ";
            }
        }
        closedir ($handle); 
    } else {
        echo "DEBUG cannot open ";
    }
    return (count($files) > 0 ) ? TRUE : FALSE;
}

$dir ="/Site/images/countries/abc/a";
if (IsNotEmpty($dir)) { 
    echo "There is no such file";
} else {
    echo "The file exists!";
}

Если это все еще не работает, и вы уверены, что каталог существует (помните, регистр важен для UNIX), вы можете посмотреть разрешения для этого каталога, чтобы убедиться, что ID пользователя, пытающийся получить к нему доступ, разрешен.

0 голосов
/ 20 июня 2011

Кристина, попробуйте удалить косую черту:

$dir ="/Site/images/countries/abc/a/"

Становится

$dir ="/Site/images/countries/abc/a"
0 голосов
/ 20 июня 2011

Попробуйте, например, это:

function IsNotEmpty($dir) {
      $dir = rtrim($dir, '/').'/';
      return is_dir($dir) && count(glob($dir.'*.*') > 2);
}
0 голосов
/ 20 июня 2011

Вы должны использовать следующий фрагмент в качестве тела для своей функции:

$aFiles = glob($sFolder);
return (sizeof($aFiles) < 1) true : false;

Это позволит получить содержимое папки в виде массива, когда пусто - ваш каталог пуст.

...