Lauxtec
@Lauxtec

PHP — как показать изображения в браузере из папки?

Добрый день.

Есть папка сайта. В ней есть папка public - конфиг апача настроен на эту папку как DocumentRoot.
Хочу сделать в корне папки сайта папку изображений. Как из нее показывать изображения в окне браузера?
  • Вопрос задан
  • 539 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Я хочу вынести ее из публичной папки.
Зачем? Есть какая-то особенная необходимость? По логике все файлы сайта должны находиться в одной папке проекта, а файлы видимые из веба в публичной папке проекта. В некоторых случаях, например когда эти файлы не должны отдаваться без какого-то уровня доступа, их выносят выше публичной папки, таким образом закрывая от прямого доступа из веб. Далее доступ осуществляется через пхп, конкретная реализация сильно зависит от задач и имеющегося кода/фреймворка. Простейший вариант - имя файла читается как параметр из урл, далее делается readfile() из этой папки с файлами, предварительно отдаются заголовки, указывающие что это файл изображения. Хотя без понимания "зачем" реализация "как" это тыканье пальцем в небо. Может вам симлинк тупо подойдет...

В идеале - в любое место на диске, которое захочу.
Так делать не нужно. Это во первых нарушает безопасность, так как вы даете права на чтение из веба в папку, которая не должна быть доступной левым пользователям, во вторых распыляет проект по машине, что тоже не есть хорошо как минимум в плане организации.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@rPman
Не понятно причем тут php, но у apache есть режим отображения содержимого каталога как html, в виде списка файлов в табличном виде (имя, размер, дата модификации...), и имя файла будет ссылкой на этот файл, если кликнуть на файлы изображений или любых других файлов, типы которых зарегистрированы в браузере - они будут отображены внутри, иначе будет диалог загрузки файла.
<Directory /var/www/html>
        Options +Indexes
        AllowOverride None
        Require all granted
    </Directory>

тут +Indexes делает именно это - генерацию html

p.s. если же нужно на php генерировать список файлов по своей логике то добавляешь поддержку php в apache (модуль mod_php или php-fpm) и index.php:
foreach (scandir('.') as $file)
{
    if ($file == '.' || $file == '..') continue;
    echo '<a href="' . htmlspecialchars($file) . '">' . htmlspecialchars($file) . '</a> - ' . filesize($file) . '<br>';
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы