Абсолютные пути в теги img и Firefox

LeRatO

Новичок
Абсолютные пути в теги img и Firefox

Добрый день...

Наткнулась на странный эффект. Возможно, кто-то эту проблему решал.

Необходимо организовать вывод картинок из локальной папки(!!!!). Для этого написан след.код:

PHP:
define ('HTTP_NEWS_IMAGES','file:///C:/MyWWW/www_multistat/images/news/');

$file_image = HTTP_NEWS_IMAGES.'cab_history.gif';

$ret_image = '<img src="'.$file_image.'">;

Firefox не выводит картинку, хоть, убейся... Выдает стандартный символ при ненайденом файле. При этом, если скопировать "локацию" файла (пункт "Copy Image Location") и попробовать открыть, то файл открывается и содержимое чудесно показывается.

В Internet Exprorer картинка показывается нормально во всех режимах.

В Opera картина аналогично Firefox'овской...


Внимание!!!
Пожалуйста, если будете отвечать, обратите внимание, что это именно локальная папка за рамками текущего хоста!
 

rotoZOOM

ACM maniac
Написанный код должен был выдать ошибку. Значит это либо не копи/пасте реального кода, либо одно из двух.
 

LeFF®

Новичок
ну так сервер же смотрит не на вашем диске C а на своем))
 

LeRatO

Новичок
Да, спасибо... Убирала лишнее и убила кавычки в последней строке кода. Привожу верный код:

PHP:
define ('HTTP_NEWS_IMAGES','file:///C:/MyWWW/www_multistat/images/news/'); 

$file_image = HTTP_NEWS_IMAGES.'cab_history.gif'; 

$ret_image = '<img src="'.$file_image.'">';

print $ret_image;
-~{}~ 31.03.08 13:35:

Автор оригинала: LeFF®
ну так сервер же смотрит не на вашем диске C а на своем))
Так и старт с локальной машины, и скрипты на локалхосте этого же самого С
 

kruglov

Новичок
Firefox не показывает на интернет-странице локальные картинки из соображений безопасности.
 

LeRatO

Новичок
Автор оригинала: alexcrown
Это ограничение системы безопасности браузера. Как его отключить в Firefox читайте тут http://kb.mozillazine.org/Links_to_local_pages_do_not_work , в Опере это ограничение не отключается.
Спасибо за ссылку.
Учитывая, что не только я буду пользоваться сайтом, а на каждой клиентской машине отключить защиту не реально (да и не стоит наверное), буду искать дургие пути.
 

rotoZOOM

ACM maniac
Интересно, то есть на каждой клиентской машине стоят веб-сервера и выложен сайт ?
Либо у всех будут файлы с одинаковым путем ?
Что-то тут не так :)
 

LeRatO

Новичок
Нет, конечно :))) Сайт пока стоит локально на момент написания.

Реализовывается функция добавления картинки к новости сайта.
Помимо закачки файла предусматривается возможность присоединения одного из загруженных уже графических файлов. Подсоединять "кота в мешке" глупо, потому надо показать картинку. То есть необходимо получить доступ к папке вне домена (в данном случае виртуального).

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

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

asterisk

Новичок
rotoZOOM
Либо у всех будут файлы с одинаковым путем
LeRatO
как я понял у тебя задача показать картинки хранящиеся локально у юзверей. Реально сделать только в IE.

-~{}~ 31.03.08 15:14:

LeRatO
и отвлекись от всяких там серверов, это тебя только запутывает.
 

LeRatO

Новичок
Нет...

Еще раз задача...

Есть основной сайт(сайт-1) и админ-система сайта(сайт-2). Конструктивно это могут быть разные домены... Заливаться на сервер может по-разному....

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

Особоенность в том, что картинки расположены в папке все сайта-2, а... на сайте-1.

Про диск С шла речь, потому что пока локально все стоит. И при заливке на сервер С будет подрабумевается не клиенткой машины, а сервера... Путь намерено был вынесен в константу, чтобы ее настроить по ситуации.


Перед этим вариантом был испробован вот такой:
В рамках виртуального домена сайта-2 создана виртуальная папка (путь с сайта-1). То есть
Alias // ""
<directory>
...
</directory>

Папка заработала, все браузеры исправно показывают содержимо папки (так как прописано соотвествующее право). Но...
По заданию необходимо в php-скрипте получить перечень файлов, чтобы потом отобразить для юзера сайта-2, и тот мог бы выбрать одну из картинок.
А вот выбрать-то список-то я и не могу! Функция scandir не признает эту виртуальную папку как директорию.

Надеюсь, теперь понятно...

-~{}~ 31.03.08 15:52:

Scandir требует реальный путь, а не виртуальный... (что в общем-то логично).
То есть, чтобы прочитать содержимое папки, необходимо задавать путь, которому присвоен Alias, а не сам Alias.

Но это выглядить странно... получается двойная настройка - вирт.папки хоста и константы в скриптах.

Отсюда вопрос: как получить содержимое виртуальной папки, зная только Alias????

-~{}~ 31.03.08 16:04:

Автор оригинала: LeRatO
Особоенность в том, что картинки расположены в папке все сайта-2, а... на сайте-1.
Следует читать:
Особоенность в том, что картинки расположены в папке НЕ сайта-2, а... на сайте-1.

Извините, описка...
 

Sluggard

Новичок
LeRatO
Отсюда вопрос: как получить содержимое виртуальной папки, зная только Alias????
realpath() тебе в помошь.
Про диск С шла речь, потому что пока локально все стоит. И при заливке на сервер С будет подрабумевается не клиенткой машины, а сервера...
Для просмотра содержимого каталога используй локальный путь. Для отображения картинок прописывай www-путь.
 

LeRatO

Новичок
Автор оригинала: Sluggard
realpath() тебе в помошь.
На виртуальной папке по alias'у возвращает false... то есть файл или папка не найдены. :)

-~{}~ 31.03.08 16:35:

Автор оригинала: Sluggard
Для просмотра содержимого каталога используй локальный путь. Для отображения картинок прописывай www-путь.
Сейчас именно так и сделано. Правда локальный путь берется из константы.
 

dimagolov

Новичок
LeRatO,
file:///C:/MyWWW/www_multistat/images/news/, это нифига не локальный путь. это url на локальный файл. локальный путь это C:/MyWWW/www_multistat/images/news/

так как ты читать ссылки не желаешь, то и давать ссылку на статью где объясняется различие локальных путей и url не буду.
 

LeRatO

Новичок
Автор оригинала: dimagolov
LeRatO,
file:///C:/MyWWW/www_multistat/images/news/, это нифига не локальный путь. это url на локальный файл. локальный путь это C:/MyWWW/www_multistat/images/news/

так как ты читать ссылки не желаешь, то и давать ссылку на статью где объясняется различие локальных путей и url не буду.
Так поправлено уже :) С момента начала дискуссии кусок доведен до ума... и путь там другой давно... остался только вопрос с локальным путем (чтобы не через константу тащить, а автоматически определять)
 

dimagolov

Новичок
LeRatO, по чему ты локальный путь хочешь определить?
вообще локальный путь и должен быть в константе. захотел положить все в другое место - положил (правда если надо отдавать клиентам на прямую, то должен быть в доступности серверу).
Я бы хранил 2 константы - путь к корню web-сервера и путь от его корня до картинок. Первое пользуем когда нужен локальный путь, второе (как часть) и локального и URL.
 

LeRatO

Новичок
Нет!
Еще раз - это не локальный путь как таковой, это физический путь папки, прописанной в httpd.conf как виртуальная папка.

А на самом деле это папка другого сайта. То в моем случае, другого виртуального домена.

Про диск С разговор только потому, что скрипты обоих сайтов пока на локальной машине, а не на сервере. С таким же успехом это мог быть диск D или папка...

-~{}~ 31.03.08 17:03:

Автор оригинала: dimagolov
Я бы хранил 2 константы - путь к корню web-сервера и путь от его корня до картинок. Первое пользуем когда нужен локальный путь, второе (как часть) и локального и URL.
Тоже вариант... но в моем случае вторая часть всегда одна и та же, не вижу смысла вытаскивать ее в отдельную константу...
К тому же ее изменение (и второй части тоже) приведет к необходимости править httpd.conf.


Итог...
Задача реализована. Тема закрыта.
Всем спасибо за помощь.
 
Сверху