вопрос по работе fileexists()

ardentlyo

Новичок
вопрос по работе fileexists()

мне приходит через QueryString адрес файла, затем я проверяю существует ли он на сервере таким образом
PHP:
$file_path ="http://".$_SERVER['HTTP_HOST'].$_SERVER['QUERY_STRING']; 
   if(!file_exists($file_path)) echo "File not FOUND";
результата не дает, файл не найден, хотя на самом деле он есть. Почему? ведь если набрать этот же адрес в строке браузера - то откроется указанный файл
PHP:
// или пробовал так

$file_path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['QUERY_STRING'];

тогда файл найден... но почему в первом случае он не находится? пользование вторым не очень то удобно в дальнейшем(
 

Gas

может по одной?
А чем тебе второй способ не устраивает?
Только нужно проверять - является ли разрешённым путь к файлу или нет. Чтоб твои исходники и прочие файлы, которые ты отдавать не собираешься, не потырили.
 

Beavis

Banned
ardentlyo
ты понимаешь разницу между абсолютными и относительными путями?
если у тебя http-запрос например http://host.ru/file.txt это ещё совсем не значит что в корне сайта есть file.txt , он может быть и совсем в другом месте
А может и вообще не быть такого... а при выполнении запроса всё равно ресурс откроется
 

ardentlyo

Новичок
ну в принципе догнал... тогда вопрос более общий...
при разработке сайта, как лучше указывать пути?например для инклуда? вот вычитал в книге, что для этих целей хорошо написать библиотекарь, который преобразовывает относительный путь в абсолютный и подгружает его? Но в нете ниче подобного не нашел.. стоит ли так делать, или есть более оптимальное решение?
 

basboy

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

Мне больше импонируют относительные пути.
 

ardentlyo

Новичок
basboy
что имеешь ввиду верные? абосютные? а если хостинг к примеру менять? не катит... а относительные работают всегда? в инклюдах и т.д?
 

basboy

Новичок
ardentlyo
Верные - это правильные.

Иногда при инклюдах (несколько уровней) как раз и может появится проблема с относительными путями.

Поэтому должен сам думать и смотреть что в твоем случае предпочтительнее.

а если хостинг к примеру менять
Какие, например, могут возникнуть проблемы?
 

ardentlyo

Новичок
basboy
ну проблемы могут возникнуть при абсолютных.. Ну прикинь скока всего прийдется менять при переезде...
Ну и как же решить такую проблему?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
ardentlyo
ну проблемы могут возникнуть при абсолютных
Скажи, пожалуйста, где может возникнуть проблема?
$file = dirname(__FILE__).'/../includes/filename';
 

ardentlyo

Новичок
Mr_Max
та вот впринципе и я такого мнения.. просто в книге нашел идею библиотекаря и т.д. и немогу понять зачем....потому и задаюсь таким вопросом

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

ardentlyo

Новичок
Gas
то есть она будет возвращать имя скрипта с которого он вызывается или скрипта-родителя?
 

ardentlyo

Новичок
Mr_Max
уже попробовал, просто думал может что-то нового кто посоветует!!
Всем спасибо!!!
 
Сверху