PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 2
ARMADA Отправлено: 13 Февраля, 2008 - 18:51:30 • Тема: в версии PHP 5.2.5 стала не правильно работать функция подсчёта кол-ва файлов в каталоге. • Форум: Программирование на PHP

Ответов: 2
Просмотров: 205
Не помогло.
В $path указан адресс каталога в виде loadfiles/ в $d укзан каталог file
При выводе содержимого массива вижу что в пустых каталогах массива не создаётся а функция
$list = glob ($path.$d."/*" );
$all = count ($list);
Выводит результат 1 а должен быть 0
(Добавление)
Я увидел разницу работы glob() в версиях < 5.2.5
В версиях ниже 5.2.5 glob() в пустых каталогах возвращает пустой массив
Array
(
)
А в версии 5.2.5 массив вообще не создаётся а возвращается просто false
(Добавление)
Решил я эту проблему изменением функции
на
function allfiles ($path)
{
$path = $path."/*";
$all = 0;
$arr = glob($path);
if (is_array($arr))
foreach ($arr as $v)
{
if(is_dir($v)) $all += allfiles ($v);
else
$all++;
}
return $all;
}

и

$list = glob ($path.$d."*");
$all = (!$list)?0:sizeof($list);
if (is_array($list)) sort($list)
if ($all == 0) echo "[Раздел пуст]<br>";

Спасибо всем за помощь.
ARMADA Отправлено: 13 Февраля, 2008 - 17:27:24 • Тема: в версии PHP 5.2.5 стала не правильно работать функция подсчёта кол-ва файлов в каталоге. • Форум: Программирование на PHP

Ответов: 2
Просмотров: 205
Почемуто функции подсчёта кол-ва файлов стали видеть не существующий файл в пустом каталоге.

Я использую функцию:

function allfiles ($path)
{
$path = $path."/*";
foreach (glob($path) as $v)
{
if(is_dir($v)) $all += allfiles ($v);
else
$all++;
}
if ($all == '' ) $all = 0;
return $all;
}

И она возвращает какоето значение, но не 0.
И выдаёт ошибку:

Warning: Invalid argument supplied for foreach() in .......code.php
on line 66
А если в каталоге есть файлы то всё нормально считает и ошибки не выдаёт.
Я прочёл что в версии 5.2.5 былы внесены изменения в функцию glob() 'Fixed regression
in glob() when enforcing safe_mode/open_basedir checks on paths containing '*'.' но почему оно стало не правильно работать не пойму.

И в этом коде sort() начал выдавать ошибку и не сробатывает условие: if ($all == 0) echo "[Раздел пуст]<br>"; в пустых каталогах.

$list = glob ($path.$d."*" ) ;
$all = count ($list);
sort($list);
if ($all == 0) echo "[Раздел пуст]<br>";

Подскажите кто знает что можно сделать?

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB