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 :: ошибка is_dir()

 PHP.SU

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


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

> Без описания
foozzi
Отправлено: 06 Февраля, 2012 - 23:03:07
Post Id



Посетитель


Покинул форум
Сообщений всего: 283
Дата рег-ции: Май 2011  
Откуда: rm -rf /


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




Пытаюсь вывести имаги из директории, вот код

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. ini_set('display_errors',1);
  3. function get_images($directory)
  4. {
  5. $filenames = array();
  6. $directory = str_replace('\\', '/', $directory);
  7. if(is_dir($directory))
  8. {
  9. $dp = opendir($directory);
  10. while($filename = readdir($dp))
  11. {
  12. if(!is_dir($directory.'/'.$filename))
  13. {
  14. $file_ext = strtolower(substr($directory.'/'.$filename, strrpos($directory.'/'.$filename, '.')+1));
  15. if(in_array($file_ext, array('jpg', 'gif', 'png')))
  16. {
  17. $filenames[count($filenames)] = $filename;
  18. }
  19. }
  20. }
  21. }
  22. $dp = closedir();
  23. return $filenames;
  24. }
  25.  
  26. $path = '/images'; // тут указываешь папку относительно корня веб дерева
  27. $img_count = 5; // тут указываешь число картинок которое нужно выводить
  28.  
  29.  
  30. $images = get_images($_SERVER["DOCUMENT_ROOT"].$path);
  31. $i = 0;
  32. while($images[$i])
  33. {
  34. $npic = rand(0, count($images)-1);
  35.  echo '<a href="'.htmlspecialchars($path.$images[$npic]).'" target="_blank"><img src="'.htmlspecialchars($path.$images[$npic]).'" border="0" alt="" width="50" height="50" ></a>';
  36. unset($images[$npic]);
  37. $images = array_values($images);
  38. $i++;
  39. if($i>=$img_count) break;
  40. }
  41. ?>


но блин выводит только ошибку
Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/usr/local/apache/htdocs/images) is not within the allowed path(s): (/home/:/usr/lib/php:/tmp) in /home/a1171***/public_html/view.php on line

Warning: closedir(): no Directory resource supplied in /home/a1171***/public_html/view.php on line

Notice: Undefined offset: 0 in /home/a1171***/public_html/view.php on line

что не так не пойму, пробовал через dirname (__FILE__) почти то же


-----
90% ошибок находятся в полуметре от монитора...
 
 Top
Okula
Отправлено: 06 Февраля, 2012 - 23:14:34
Post Id



Участник


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


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




Я наверно сейчас тебя удивлю, но весь код твоей функции можно было записать в одну строку:
PHP:
скопировать код в буфер обмена
  1. $dir = dirname(__FILE__).'/papka'; // обрати внимание что я не пишу слеш вконце имени папки, он есть в функции
  2. $files = glob($dir.'/*.{gif,png,jpeg,jpg}', GLOB_BRACE);
  3. var_dump($files);

Не надо изобретать велосипед, если есть готовые решения Улыбка
 
 Top
foozzi
Отправлено: 06 Февраля, 2012 - 23:20:41
Post Id



Посетитель


Покинул форум
Сообщений всего: 283
Дата рег-ции: Май 2011  
Откуда: rm -rf /


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




Okula пишет:
Я наверно сейчас тебя удивлю, но весь код твоей функции можно было записать в одну строку:
PHP:
скопировать код в буфер обмена
  1. $dir = dirname(__FILE__).'/papka'; // обрати внимание что я не пишу слеш вконце имени папки, он есть в функции
  2. $files = glob($dir.'/*.{gif,png,jpeg,jpg}', GLOB_BRACE);
  3. var_dump($files);

Не надо изобретать велосипед, если есть готовые решения Улыбка


надо бы выводить последние загруженые имаги...


-----
90% ошибок находятся в полуметре от монитора...
 
 Top
Okula
Отправлено: 06 Февраля, 2012 - 23:29:37
Post Id



Участник


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


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




Этим кодом я только заменил твою функцию get_images() далее можешь действовать по своему коду.
Функция glob() возвращает нумерованный массив начиная с индекса 0.
 
 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