Intereting Posts
Как установить путь PHP include через .htaccess? php-apcu (CGI / FastCGI) apc_fetch всегда возвращает false предотвратить объединение двух конфигураций модуля в Zend Framework 2 Смешать прозрачный градиент с изображением с помощью библиотеки php GD Войти на сайт с помощью Gmail Как отсортировать ассоциативный массив php в определенном порядке? читать и писать с использованием phpexcel при использовании listWorksheetNames () PHP – обнаружение ошибки / вставки mysql из-за нарушения уникального ограничения Загрузка файла BlueJQ jQuery с базой данных Лучшая дизайнерская практика для реализации маршрутов и контроллеров для приложения RESTFul Laravel JQuery, ajax не будет предупреждать о каком-либо сообщении Сложные предложения WHERE, использующие ORM PHP Doctrine ORM 500 Ошибка сервера: преждевременный конец заголовков сценариев: PHPExcel: проверка данных не работает в формате .xls Настройка почтового сервера для работы с PHP

Ссылка php на файл изображения за пределами веб-каталога по умолчанию

Вот структура каталогов

/domain.com /public_html /functions /image /mobile /www 

папка /domain.com/public_html/www имеет файл index.php, по умолчанию веб-каталог / user / public_html / www в индексном файле является include, который включает в себя функции с включением «../ functions / function.inc» это работает без проблем, когда я хочу ссылаться на изображение в папке с изображением. Я не получаю никаких результатов, например

 <img src="../image/graphic/logo.gif" alt="alt text"/> 

Кто-нибудь знает, почему ссылка на изображение не работает и как правильно установить ссылку на файл изображения?

Я пробовал <img src="<?php echo $_SERVER['PHP_SELF']; ?>../image/graphic/logo.gif" alt="alt text"/>

но это дает мне тот же результат, когда я создаю ссылку вокруг изображения, чтобы добраться до свойств, которые я получаю в качестве пути http://img.ruphp.com/php/small_2008_10_22_001.JPG путь должен быть http: // domain.com/public_html/image/pc/tattoo_small/small_2008_10_22_001.JPG, когда я пытаюсь перейти непосредственно к этому URL- адресу http://img.ruphp.com/php/small_2008_10_22_001.JPG Я получаю файл 404 не найден потому что веб-каталог по умолчанию – /domain.com/public_html/www Я попытался http://domain.com/../image/pc/tattoo_small/small_2008_10_22_001.JPG, чтобы попасть в папку с изображениями, но это никому не помогает.

Кто-нибудь какие-либо идеи, или невозможно связать html с графическими файлами вне веб-каталога по умолчанию?

спасибо за прочтение

Спасибо за ответы. Я попытаюсь решить мою проблему с одним из рекомендуемых решений и сообщить о своем рабочем решении здесь. Я хотел, чтобы папка с изображениями находилась на том же уровне, что и папка www и mobile, потому что некоторые изображения, используемые для версии pc (www) и мобильной версии, одинаковы. Конечно, проще просто получить папку с изображениями в www и в мобильной папке, и я думаю, что это то, что я собираюсь делать.

Благодарю вас всех за советы. Основная причина, по которой я не собираюсь работать со сценарием, заключается в том, что скрипт будет трудным решением для легкой проблемы, а также потому, что я действительно не вижу, как вы можете обернуть свой образ в классе css и как обеспечить alt текст для изображения.

Невозможно напрямую обращаться к файлам за пределами webroot; это встроенное ограничение безопасности, которое существует по уважительной причине.

Тем не менее, можно использовать PHP-скрипт для обслуживания этих изображений для вас. Таким образом вы можете вызвать изображение, подобное:

 /image.php?file=myfile.jpg 

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

 <?php $file = basename(urldecode($_GET['file'])); $fileDir = '/path/to/files/'; if (file_exists($fileDir . $file)) { // Note: You should probably do some more checks // on the filetype, size, etc. $contents = file_get_contents($fileDir . $file); // Note: You should probably implement some kind // of check on filetype header('Content-type: image/jpeg'); echo $contents; } ?> 

Использование сценария для этого имеет ряд преимуществ:

  • Вы можете отслеживать загрузки и реализовывать счетчик, например
  • Вы можете ограничить файлы для пользователей, прошедших проверку подлинности.
  • … и т.д

Если вы используете Apache в качестве сервера, вы можете настроить его на псевдоним каталога в httpd.conf …

 <IfModule mod_alias.c> Alias /images/ "/User/Public_html/Image/" <Directory "/User/Public_html/Image"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> </IfModule> 

IIRC, папка с псевдонимом не обязательно должна находиться внутри веб-сайта.

Вы не можете обслуживать страницу, находящуюся за пределами веб-каталога, потому что путь не работает, т. Е. http://mydomain.com/../page.html просто ссылается на недоступное место.

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

Создайте символическую ссылку внутри веб-корня, которая указывает на нужный каталог.

 cd public_html ln -s ../images 

Для этого Apache нуждается в Options +FollowSymlinks для работы (вы можете поместить его в .htaccess в свой веб-корень).

Написание PHP-скрипта, который обслуживает файлы из внешнего корня веб-сайта, поражает цель веб-root. Вам нужно будет тщательно проверить пути, чтобы не подвергать весь диск сети.

Невозможно напрямую связать файл с сайтом, недоступным для веб-сервера.

Тем не менее, вы можете написать PHP-скрипт, который будет прокси-изображения для вас

 <img src="my_php_proxy.php"> 

потому что PHP может отправлять данные изображения, а также HTML. Этот «образ» PHP не ограничивается той же папкой, что и веб-доступный материал, он может обращаться к любому читаемому файлу на сервере. См. http://www.electrictoolbox.com/image-headers-php/ для получения дополнительной информации.

Вы можете сделать ссылку на каталог изображений внутри public___html, переместить каталог изображений в public_html или, если у вас есть особая симпатия к свернутым решениям, вы можете написать скрипт, который читает файл изображения и выводит его пользователю (из Конечно, если вы не сделаете белый список всех изображений, у вас может возникнуть потенциальная проблема безопасности в ваших руках).