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]   

> Без описания
loki li
Отправлено: 17 Марта, 2009 - 01:45:24
Post Id


Новичок


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


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




Никак не могу понять, в чём проблема - для части файлов скрипт выдаёт md5, как и предполагалось, а для другой части выдаёт ошибку, например: Warning: md5_file(1236696084899.txt) [function.md5-file]: failed to open stream: No such file or directory in Y:\home\test7.ru\www\md5-from-site.php on line 12
Хотя доподлинно известно, что эти файлы существуют и на месте.

Привожу весь код полностью, как есть:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $tline="";
  4. function allmd5($dir)
  5. {
  6. global $tline;
  7. if ($filelist = scandir($dir))  
  8. {
  9.         foreach ($filelist as $file)  
  10.     {  
  11.         if ($file != "." && $file != "..")
  12.         {
  13.             if (is_file($dir."\\".$file)) {$line = md5_file($file); echo "{$dir}\{$file} - {$line}<br>"; $tline.=$line;}
  14.             if (is_dir($dir."\\".$file))
  15.             {
  16.                 $dir2 = $dir."\\".$file;
  17.                 allmd5($dir2);  
  18.             }
  19.         }
  20.     }
  21. }
  22. return $tline;
  23. }
  24.  
  25. $tmd5=allmd5(getcwd());
  26. echo "<br><br><b>Total MD5 = ".md5($tmd5)."</b>";
  27. ?>
  28.  

(Отредактировано автором: 17 Марта, 2009 - 01:47:33)

 
 Top
Onuchin Artem
Отправлено: 17 Марта, 2009 - 10:59:15
Post Id



Новичок


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


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




попробовал запустить твой скрипт - при глубокой вложенности папок возникла ошибка.
Пользуйся стандартной библиотекой: http://www.php.net/~helly/php/ext/spl/main.html

PHP:
скопировать код в буфер обмена
  1.  
  2. $folder_iterator = new RecursiveDirectoryIterator('c:\php');
  3. $file_iterator = new RecursiveIteratorIterator($folder_iterator);
  4. $tline = '';
  5.   foreach($file_iterator as $file)
  6.   {
  7.   $tline.=md5_file($file);
  8.   echo $file, ' - ', md5_file($file), '<br>';
  9.   }
  10. echo "<br><br><b>Total MD5 = ".md5($tline)."</b>";
  11.  

(Добавление)
PS книжка еще хорошая есть, где про SPL написано
http://www[dot]progbook[dot]net/php/326-[dot][dot][dot]testing-and[dot]html
 
 Top
loki li
Отправлено: 17 Марта, 2009 - 13:19:02
Post Id


Новичок


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


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




>Onuchin Artem Благодарю за дельную подсказку!
Правда твой вариант сразу не заработал ссылаясь на попытку клонировать неклонируемую функцию (или что-то в этом духе).

Заработал вот такой вариант, вроде тоже самое, но почему-то работает:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $root=$_SERVER["DOCUMENT_ROOT"];
  3. $tline = '';
  4.   foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($root)) as $file)
  5.   {
  6.   $tline.=md5_file($file);
  7.   echo $file, ' - ', md5_file($file), '<br>';
  8.   }
  9. echo "<br><br><b>Total MD5 = ".md5($tline)."</b>";


P.S. Большое спасибо за ссылку, буду изучать.
 
 Top
Onuchin Artem
Отправлено: 17 Марта, 2009 - 13:28:57
Post Id



Новичок


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


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




Напиши, пожалуйста, текст ошибки. интересно
 
 Top
loki li
Отправлено: 17 Марта, 2009 - 13:47:19
Post Id


Новичок


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


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




Fatal error: Trying to clone an uncloneable object of class RecursiveIteratorIterator in /pub/home/alfabet/htdocs/md5-fil e-old.php on line 4
 
 Top
Onuchin Artem
Отправлено: 17 Марта, 2009 - 14:38:17
Post Id



Новичок


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


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




loki li пишет:
Fatal error: Trying to clone an uncloneable object of class RecursiveIteratorIterator in /pub/home/alfabet/htdocs/md5-fil e-old.php on line 4


Вероятно у тебя включен
zend.ze1_compatibility_mode = On
т.е. ты используешь объектную модель php4
советую отключить ее.
http://php.su/learnphp/phpoo/?php5
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB