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 :: каталог файлов и папок

 PHP.SU

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


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

> Без описания
toliks1855
Отправлено: 05 Декабря, 2011 - 23:43:56
Post Id


Новичок


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


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




Здравствуйте! Подскажите пожалуйста, что нужно исправить, чтобы вывести в браузер весь список директорий и файлов (подпапок и подфайлов), а не только в текущей директории?

PHP:
скопировать код в буфер обмена
  1.  
  2. function scan($dir)
  3. {
  4.   $a = opendir($dir);
  5.  
  6.   while(false !== ($file = readdir($a)))  
  7.   {
  8.         if($file != '..' && $file != '.')
  9.         {
  10.                 echo $file;
  11.        
  12.                         if(is_dir($file))
  13.                         {
  14.                                 scan($dir.DIRECTORY_SEPARATOR.$file);
  15.                         }
  16.                        
  17.                                 echo '<br>';
  18.         }
  19.        
  20.   }  
  21.   closedir($a);
  22. }
  23.  
  24. $b = 'z:home/localhost/www';
  25. scan($b);
  26.  



Выводит следущее:
favicon.ico
index.php
moj_primer.php
php
pic1.jpg
Tests
Tools

Хотя php, Tests и Tools тоже директории
 
 Top
Panoptik
Отправлено: 06 Декабря, 2011 - 01:27:42
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




PHP:
скопировать код в буфер обмена
  1.  
  2. //путь к папке с файлами
  3. $path = '/var/www/';
  4.  
  5.  
  6. //функция сканирования всех папок и файлов по заданному пути
  7.  function read_dir($path) {    
  8.         $dir = scandir($path);  
  9.         foreach($dir as $diritem) {
  10.             print $dir."\n";
  11.            
  12.             if(is_dir($path.$diritem) && $diritem != '.' && $diritem != '..') {
  13.                 read_dir($path.$diritem.'/');
  14.             }
  15.         }
  16.     }
  17.  }
  18.  
  19.  read_dir($path);
  20.  


я буквально неделю назад писал для собственной нужды подобие вышеописанной функции. есть лишь один ньюанс, файлы должны быть доступны для сервера, чтобы он смог их прочитать - это либо права 755 для папок и 644 для файлов либо владелец файлов и пользователь от которого запущен сервер должен совпадать

в виндовсе права конечно не нужны.

(Отредактировано автором: 06 Декабря, 2011 - 01:29:49)



-----
Just do it
 
 Top
LIME
Отправлено: 06 Декабря, 2011 - 10:16:18
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




Panoptik пишет:
в виндовсе права конечно не нужны.


только по умолчанию не нужны
там вообщето тоже есть права но их надо запрещать а не разрешать как в никсах
щелкните свойства какогото файла вкладку безопастность
будут вам права ))
 
 Top
Самогонщик
Отправлено: 06 Декабря, 2011 - 10:18:33
Post Id



Посетитель


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


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





Тем не менее для запуска денвера мне пришлось таки разрешать права
 
 Top
sKaa
Отправлено: 06 Декабря, 2011 - 11:07:57
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]




Всё ещё пользуетесь денвером? -Тогда мы идем к вам!
 
 Top
Самогонщик
Отправлено: 06 Декабря, 2011 - 11:31:46
Post Id



Посетитель


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


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





Жду
 
 Top
GrishaDm
Отправлено: 16 Декабря, 2011 - 09:15:58
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Июнь 2010  


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




sKaa пишет:


Всё ещё пользуетесь денвером? -Тогда мы идем к вам!

Скажу из практического опыта - некоторым хостингах реально была бы польза от установки на них денвера - там сидят идиоты, которые не могут нормально настроить вэб-сервер даже на совершенно тривиальные операции и оттуда поэтому идёт массовый отток клиентов. Установив денвер, который полегче в настройке, такой хостер бы увеличил собственный доход (если уж он так экономит на техподдержке хостинга что туда кроме полных идиотов никто не идёт работать). Так что не списывайте денвер со счетов - для его применения в будущем наоборот представится огромная ниша, которая будет только расширяться.
 
 Top
LIME
Отправлено: 19 Декабря, 2011 - 15:33:21
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




GrishaDm предлагаете на *nix ставить денвер ? Ха-ха
попробуйте сначала потом отпишите что у вас выйдет...интересно ))
 
 Top
GrishaDm
Отправлено: 21 Декабря, 2011 - 10:47:06
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Июнь 2010  


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




LIME пишет:
GrishaDm предлагаете на *nix ставить денвер ? Ха-ха
попробуйте сначала потом отпишите что у вас выйдет...интересно ))

В каком это интересно месте я упомянул *nix? Или вы думаете что все хостинги на *nix? Обрадую вас - это не так - и скажу больше - если найдёте хоть один IIS под *nix, то потом потом обязательно отпишитесь ))
 
 Top
LIME
Отправлено: 21 Декабря, 2011 - 12:39:54
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




дык либо IIS либо денвер
GrishaDm пишет:
Или вы думаете что все хостинги на *nix?
подавляющее большинство
 
 Top
данила
Отправлено: 11 Января, 2012 - 20:43:46
Post Id



Забанен


Покинул форум
Сообщений всего: 273
Дата рег-ции: Янв. 2012  
Откуда: Буденновск


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

[+][+]


могу код по круче дать! щас дам
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. echo "<table border=1 cellspacing=0 cellpadding=0>
  4. <tr><td><small><b>Файл</b></small></td><td><small><b>Тип</b></small></td><td><small><b>В последний раз был открыт</b></small></td><td><small><b>В последний раз редактировался</b></small></td><td><small><b>Размер</b></small></td></tr>";
  5. $folders = array();
  6. $files = array();
  7. $dir = opendir($_GET["d"]);
  8. while($file = readdir($dir))
  9. {
  10. if($file == '.' || $file == '..') continue;
  11. if(is_dir($_GET["d"] . $file))
  12. {
  13. $folders[] = $file;
  14. }
  15. else
  16. {
  17. $files[] = $file;
  18. }
  19. }
  20. closedir($dir);
  21. foreach($folders as $tmp)
  22. {
  23. echo '<tr>
  24. <td>a title="Открыть ' . $tmp . '" href="php_d.php?d=' . $_GET["d"] . $tmp . '/">' . $tmp . '</a></td>
  25. <td>'.filetype($_GET["d"] . $tmp).'</td>
  26. <td>'.date("F d Y H:i:s", fileatime($_GET["d"] . $tmp)).'</td>
  27. <td>'.date("F d Y H:i:s", filemtime($_GET["d"] . $tmp)).'</td>
  28. <td>'.disk_total_space($_GET["d"] . $tmp).'</td>
  29. </tr>';
  30. }
  31. foreach($files as $tmp)
  32. {
  33. echo '<tr><td>' . $tmp . '</td>
  34. <td>'.filetype($_GET["d"] . $tmp).'</td>
  35. <td>'.date("F d Y H:i:s", fileatime($_GET["d"] . $tmp)).'</td>
  36. <td>'.date("F d Y H:i:s", filemtime($_GET["d"] . $tmp)).'</td>
  37. <td>'.filesize($_GET["d"] . $tmp).'</td>
  38. </tr>';
  39. }
  40. echo "</table>";
  41. ?>
  42.  

файл вызываеться так например имя файла пусть будет php_d.php
если лежит в главном каталоге то не чего не надо вроди бы делать а если в папке site.ru/ararar/php_d.php
то вызываеться так
site.ru/ararar/php_d.php?d=../
ясно??
и этот скрипт сортирует отдельно файлы и папки! кстати тут сразу и переход по папкам) нажми спасибо)
 
 Top
Okula
Отправлено: 11 Января, 2012 - 21:24:58
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


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




данила, весть твой код уберётся в 1-ин цикл. И нифига он не круча, скорее даже хуже. Функции opendir(), readdir() и closedir() заменяются всего одной функцией scandir().
Например вывод файлов или папок:
PHP:
скопировать код в буфер обмена
  1. // $directory - путь до сканируемого каталога
  2. $dir = scandir($directory);
  3. foreach($directory as $name) {
  4.     if($name == '.' || $name == '..') continue;
  5.     if(is_dir($directory.'/'.$name) == TRUE) {
  6.         // это папка
  7.     } else {
  8.         // это файл
  9.     }
  10. }

(Отредактировано автором: 11 Января, 2012 - 21:26:39)

 
 Top
данила
Отправлено: 12 Января, 2012 - 15:07:30
Post Id



Забанен


Покинул форум
Сообщений всего: 273
Дата рег-ции: Янв. 2012  
Откуда: Буденновск


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

[+][+]


у меня можно преходить по папкам это 1
показывает когда последний раз открывался и редактировался это 2
и показывает сколько весит каталог и файл это 3!
 
 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