Вот структура каталогов
/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 или, если у вас есть особая симпатия к свернутым решениям, вы можете написать скрипт, который читает файл изображения и выводит его пользователю (из Конечно, если вы не сделаете белый список всех изображений, у вас может возникнуть потенциальная проблема безопасности в ваших руках).