Как я могу показать изображения вне корневого каталога в моем приложении php?

У меня есть веб-приложение на PHP с использованием сервера apache, linux. По какой-то причине я сохраняю документы и изображения вне веб-корня. Как я могу показать эти изображения при входе пользователя в систему.

Solutions Collecting From Web of "Как я могу показать изображения вне корневого каталога в моем приложении php?"

PHP по умолчанию уже может обращаться к файлам за пределами корня веб-сайта, если только не ограничен директивой open_basedir (или безопасным режимом, но надеюсь, что вы не в этой клетке).

Обычно рекомендуется вставлять в конфигурацию VirtualHost ограничение open_basedir . Вы можете указать несколько каталогов, разделенных : на Linux и ; на окнах.

 php_admin_value open_basedir /var/www/s/stage:/usr/share/php:/your/dir 

Для доступа к этим файлам используется либо абсолютный путь, либо путь относительно позиции файла PHP. (Таким образом, вам придется …/ достичь уровней выше).

Также убедитесь, что каталоги, в которые вы хотите записать, назначены пользователю веб-сервера и имеют разрешение на запись.

В противном случае у вас есть второй вариант:

Внутри вашего каталога www создайте файл «image.php» с похожим контентом:

 <?php header('Content-Type: image/png'); readfile("../img/" . $_GET['img']); ?> 

И назовите свои изображения с помощью

 <img src="image.php?img=myimage.png" /> 

Имейте в виду, что ваш PHP-файл не должен быть таким простым 🙂 Как вы можете захотеть обратиться к нескольким форматам изображений (и предоставить для них правильный заголовок), проверить путь / включения вредоносных файлов (вы не хотите использовать $ _GET без проверки / дезинфекции ввода), дополнительное кэширование и т. Д. И т. Д. И т. Д.

Но это должно дать вам представление о том, как вы можете настроить свою проблему.

Проще всего это будет выводить изображение с правильными заголовками,
помните, что вам нужно установить заголовок (), прежде чем вымывать что-либо из выходного буфера
=> нет эха или печати перед

 $ file = '../../somedirectory/image.jpg';
 заголовка ( 'Content-Type: изображение / JPEG');
 header ('Content-Length:' .filesize ($ file));
 echo file_get_contents ($ file);