Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Почему могут не работать filetype() is_file() is_dir() и lstat()?

 PHP.SU

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


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

> Без описания
Lasana
Отправлено: 23 Мая, 2011 - 02:24:21
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Здравствуйте!

Мне нужно выполнить такую простую задачу: сосканировать имена файлов из папки на сервере и вывести имена директорий в одну колонку, а имена файлов - в другую (ну типа как в файл-менеджере)

Открываю папку: $dir_files=scandir($dirname)

И тут начинает нечто непонятное: пытаюсь функцией filetype ($dir_files[$i]) определить, что у меня файл или папка - мне выдаётся Warning: filetype() [function.filetype]: stat failed for filename.jpg (ну и т.д. и т.п.)

пробую is_dir и is_file - оно "видит" только одну папку: корневой каталог, остальные все считает файлами

lstat () и stat () выдают те же варнинги

Почему такое может быть?
 
 Top
komprenda
Отправлено: 23 Мая, 2011 - 04:53:55
Post Id


Гость


Покинул форум
Сообщений всего: 105
Дата рег-ции: Май 2011  


Помог: 3 раз(а)




Lasana пишет:
Здравствуйте!

Мне нужно выполнить такую простую задачу: сосканировать имена файлов из папки на сервере и вывести имена директорий в одну колонку, а имена файлов - в другую (ну типа как в файл-менеджере)

Открываю папку: $dir_files=scandir($dirname)

И тут начинает нечто непонятное: пытаюсь функцией filetype ($dir_files[$i]) определить, что у меня файл или папка - мне выдаётся Warning: filetype() [function.filetype]: stat failed for filename.jpg (ну и т.д. и т.п.)

пробую is_dir и is_file - оно "видит" только одну папку: корневой каталог, остальные все считает файлами

lstat () и stat () выдают те же варнинги

Почему такое может быть?


нужно полный путь до файла указывать, а не только передавать его имя filetype($dirname . "/" . $dir_files[$i])
 
 Top
ugin_root
Отправлено: 23 Мая, 2011 - 09:00:23
Post Id


Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Май 2011  
Откуда: Киргизия


Помог: 5 раз(а)




PHP:
скопировать код в буфер обмена
  1. $dirs = @opendir( $path ) or die( 'Нет доступа к каталогу.' );
  2. while( $dir = readdir( $dirs ) )
  3. {
  4.     $dir_name = $path . '/' . $dir;
  5.     if( !is_file( $dir_name ) )
  6.     {//папки
  7.         echo "Каталог: " . $dir . "\n";
  8.     }
  9.     else
  10.     {//файлы
  11.         $size = filesize($dir_name);
  12.         echo "Файл: " . $dir . " Размер (byte): " . $size;
  13.     }
  14. }

(Добавление)
не помню почему именно, но я не стал юзать scandir вместо неё opendir
(Добавление)
обрати внимание на строку под номером 4
 
 Top
Lasana
Отправлено: 23 Мая, 2011 - 11:55:02
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




[quote=komprenda]
Lasana пишет:
Здравствуйте!

нужно полный путь до файла указывать, а не только передавать его имя filetype($dirname . "/" . $dir_files[$i])


О!
Спасибо! Сработало!
(Добавление)
ugin_root пишет:
PHP:
скопировать код в буфер обмена
  1. $dirs = @opendir( $path ) or die( 'Нет доступа к каталогу.' );
  2. while( $dir = readdir( $dirs ) )
  3. {
  4.     $dir_name = $path . '/' . $dir;
  5.     if( !is_file( $dir_name ) )
  6.     {//папки
  7.         echo "Каталог: " . $dir . "\n";
  8.     }
  9.     else
  10.     {//файлы
  11.         $size = filesize($dir_name);
  12.         echo "Файл: " . $dir . " Размер (byte): " . $size;
  13.     }
  14. }

(Добавление)
не помню почему именно, но я не стал юзать scandir вместо неё opendir
(Добавление)
обрати внимание на строку под номером 4


Спасибо!! Работает!!Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Операционная система и системные вызовы »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB