Я пытаюсь создать сценарий галереи динамической галереи изображений, чтобы клиент, когда я закончил работу с сайтом, мог загружать изображения через FTP, и сайт будет обновляться автоматически. Я использую сценарий, который я нашел здесь, но я не могу заставить его работать на всю жизнь. PHP пишет информацию, но никогда не будет записывать изображения, которые он должен найти в каталоге. Не знаю, почему. Демо здесь, и здесь вы можете увидеть рабочий код (без PHP).
<?php function getDirTree($dir,$p=true) { $d = dir($dir);$x=array(); while (false !== ($r = $d->read())) { if($r!="."&&$r!=".."&&(($p==false&&is_dir($dir.$r))||$p==true)) { $x[$r] = (is_dir($dir.$r)?array():(is_file($dir.$r)?true:false)); } } foreach ($x as $key => $value) { if (is_dir($dir.$key."/")) { $x[$key] = getDirTree($dir.$key."/",$p); } } ksort($x); return $x; } $path = "../images/bettydew/"; $tree = getDirTree($path); echo '<ul class="gallery">'; foreach($tree as $element => $eval) { if (is_array($eval)) { foreach($eval as $file => $value) { if (strstr($file, "png")||strstr($file, "jpg")||strstr($file, "bmp")||strstr($file, "gif")) { $item = $path.$file; echo '<a href="javascript:void(0);"><img src="'.$item.'" alt="'.$item.'"/></a>'; } } } } echo '</ul>'; ?>
проблема пути и проблема рекурсии в подкаталогах.
возможно, попробуйте это:
<?php $path = "./images/bettydew/"; $file_array = array (); readThisDir ( $path, &$file_array ); echo '<ul class="gallery">'; foreach ( $file_array as $file ) { if (strstr($file, "png")||strstr($file, "jpg")||strstr($file, "bmp")||strstr($file, "gif")) { list($width, $height) = getimagesize($file); echo '<li><a href="javascript:void(0);"><img src="'.$file.'" width="'.$width.'" height="'.$height.'" alt="'.$file.'"/></a></li>'; } } echo '</ul>'; function readThisDir ( $path, $arr ) { if ($handle = opendir($path)) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { if (is_dir ( $path."/".$file )) { readThisDir ($path."/".$file, &$arr); } else { $arr[] = $path."/".$file; } } } closedir($handle); } } ?>
Либо ваш путь является ошибкой … это вызвало у меня подобную ошибку, когда я кормлю неправильный путь к переменной $ path.
Или у вас нет разрешения на чтение в этом каталоге … проверьте также разрешения
И не забудьте проверить '/' в конце вашего пути, так как без него ваш код не может выполнять рекурсивный поиск внутри дочернего каталога …
И, наконец, ваш код не даст правильного пути к файлу подкаталогов при записи вывода … так что проверьте его тоже …