ньюансы file_exists()

aZa

Новичок
ньюансы file_exists()

не совсем понятно в каком виде должен подаваться путь к файлу при вызове функции file_exists() ? это зависит от способа установки PHP под Apache?

когда я задаю что-то вроде file_exists("/somefile.txt"), которые находится в корневом каталоге Apache-вского вебсервера, то функция возвращает FALSE даже при наличие этого файла там ... ОС: WinXP
 

brodobrey

Guest
Пиши лучше относительно вызываемого файла.
file_exists("../../folder/file.***");
 

netdog

net @
>file_exists("/somefile.txt");

Это получается корень не от апачи а от самого винта.
пиши если под win че-нитиь типа c:/apache/www/...
или относительный как постом выше...
 

aZa

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

вообщем-то я так и понял, что корень от самого винта, но каким же образом PHP добирается до этого самого корня, если запущен, скажем, как модуль Apache?.. эдак вся безопасность идет к чертям. :D :D

или все таки определение "корня" для PHP зависит от способа его установки?
 

netdog

net @
file_exists("/somefile.txt");
как не крути, будет проверять somefile.txt от самого корня..
другое дело сможет ли получить доступ apache/php к этому файлу...
 

aZa

Новичок
просто для меня каким-то двусмысленным является понятие "корня" ... корня чего - то ли текущей файловой системы? то ли Apache-вского htdocs-а?..

в PHP manual-е ничего об этом не говорится.
 

brodobrey

Guest
Автор оригинала: aZa
просто для меня каким-то двусмысленным является понятие "корня" ... корня чего - то ли текущей файловой системы? то ли Apache-вского htdocs-а?..

в PHP manual-е ничего об этом не говорится.
Зачем все таки использовать полный путь.
Используй относительный, он тогда будет легко переносим.
Напиши функцию типа

function check_file($path, $file) {
if (file_exists($path.$file))
return $path.$file;
}
 

netdog

net @
>просто для меня каким-то двусмысленным является понятие "корня"

от текущей файловой системы
 

aZa

Новичок
2brodobrey: так вот я и говорю, что переменная $path, если будет "относительной" может меняться для разных файлов сайта, а вот если сделать ее "абсолютной", то она везде будет одна и та же.
 

Yuriy_S

-=PHP-Club=-
не совсем понятно в каком виде должен подаваться путь к файлу при вызове функции file_exists() ? это зависит от способа установки PHP под Apache?

когда я задаю что-то вроде file_exists("/somefile.txt"), которые находится в корневом каталоге Apache-вского вебсервера, то функция возвращает FALSE даже при наличие этого файла там ... ОС: WinXP
Писать путь нужно полный от корня жесткого диска ("C:\inetpub\www\vasya\index.php"). Либо можно его задать относительно вызываемого скрипта - "../" - означает переход на 1 уровень вверх (работать будет как в винде, так и в Юниксах).
Пример:
include("../../templates/head_body.tpl");
либо если путь будет меняться, то include($path."head_body.pl");
 

Varg

Guest
В массиве $_SERVER есть все полезные пути для данной проблемы.
Или пиши что-нить типа file_exists($Path . "filename.ext");

а $Path = $_SERVER['DOCUMENT_ROOT']; например.
 

Linker

Guest
aZa:

if(is_file($_SERVER['DOCUMENT_ROOT']."somefile.txt"))
{ pognali_pchol_v_Odessu(); }
 
Сверху