2015-08-25 4 views
0

Я нашел полезный PHP-код, который отображает фотографии в каталоге папок в качестве предварительного просмотра изображения. Проблема заключается в том, что мой хост-провайдер блокирует одну из команд сценария «Shell_exec()», поэтому PHP-код не работает.Ошибка Shell_Exec для списка каталогов?

Любой способ получить код для запуска без использования shell_exec?

<?PHP 
    // filetypes to display 
    $imagetypes = array("image/jpeg", "image/gif"); 
?> 
<?PHP 

    function getImages($dir) 
    { 
    global $imagetypes; 

    // array to hold return value 
    $retval = array(); 

    // add trailing slash if missing 
    if(substr($dir, -1) != "/") $dir .= "/"; 

    // full server path to directory 
    $fulldir = "{$_SERVER['DOCUMENT_ROOT']}/$dir"; 

    $d = @dir($fulldir) or die("getImages: Failed opening directory $dir for reading"); 
    while(false !== ($entry = $d->read())) { 
     // skip hidden files 
     if($entry[0] == ".") continue; 

     // check for image files 
     $f = escapeshellarg("$fulldir$entry"); 
     $mimetype = trim(`file -bi $f`); 
     foreach($imagetypes as $valid_type) { 
     if(preg_match("@^{$valid_type}@", $mimetype)) { 
      $retval[] = array(
      'file' => "/$dir$entry", 
      'size' => getimagesize("$fulldir$entry") 
     ); 
      break; 
     } 
     } 
    } 
    $d->close(); 

    return $retval; 
    } 
?> 
<?PHP 
    // fetch image details 
    $images = getImages("images"); 

    // display on page 
    foreach($images as $img) { 
    echo "<div class=\"photo\">"; 
    echo "<img src=\"{$img['file']}\" {$img['size'][3]} alt=\"\"><br>\n"; 
    // display image file name as link 
    echo "<a href=\"{$img['file']}\">",basename($img['file']),"</a><br>\n"; 
    // display image dimenstions 
    echo "({$img['size'][0]} x {$img['size'][1]} pixels)<br>\n"; 
    // display mime_type 
    echo $img['size']['mime']; 
    echo "</div>\n"; 
    } 
?> 
+0

Ваш вопрос действительно сбивает с толку, не могли бы вы рассказать о том, что вы хотите сделать именно? – Criesto

+1

Я не вижу причин использовать shell_exec(). Существуют функции php для сканирования каталога. Просто просмотрите руководство по php.net. –

+0

В изображении предварительного просмотра? – user5180991

ответ

0

Вы можете получить тип mime файла с помощью функции PHP mime_content_type(). Таким образом вы можете избавиться от shell_execute, используемого для обнаружения типа mime в вашем коде.