Как правильно определить наличие файла? (решено)

Главные вкладки

Аватар пользователя Alex_R Alex_R 4 января 2012 в 13:58

Столкнулся с необходимостью определить существует файл или нет (файл может быть как локальным, так и на чужом сервере в интернете).
Сперва определяю локальный файл или по http...
С удаленными файлами делаю так:

<?php
   $Headers 
= [user=get_headers]get_headers[/user]($img);
   if(!
preg_match("|200|"$Headers[0])) {
.....
?>

все отлично работает, а вот с локальными файлами возник полный затык. Sad
Сперва попытался пользоваться функцией ПХП file_exists - она у меня очень долго не хотела вообще ничего возвращать (возвращала пустую строку, хотя по логике должна возвращать вроде как TRUE/FALSE или 0/1), в итоге от нее добился получения "1" только при подстановке аргументом полного пути (пути начинающегося с "var\www\....") к существующему файлу, что не очень удобно. Кстати как из Друпала узнать путь от корня до установки Друпала?
Далее решил поискать в Друпале аналогичную функцию и нашел http://api.drupal.ru/api/function/check_file , однако с ней результаты еще более плачевные, в документации практически ничего не написано ни про что должно быть аргументом, ни что у нее на выходе, а опытным путем, что бы я не подставлял в виде пути на выходе всегда пустая строка. Как этой функцией пользоваться?
Дальше совсем интересно, стал экспериментировать с fopen(.... ,"r") и что бы я не ставил первым аргументом никаких ошибок php не выдало... Ничего не понимаю Sad Может у меня что то с конфигурацией php или сервера не так? может в эту сторону копать надо? Подскажите пожалуйста.

Комментарии

Аватар пользователя Alex_R Alex_R 4 января 2012 в 15:54

<a href="mailto:sas@drupal.org">sas@drupal.org</a> wrote:

<?php
$source 
путь относительно корня сайтанапример files/myfile.png
$source 
realpath($source); 
file_exists($source)
?>

Огромное СПАСИБО!

Аватар пользователя 6RUN0 6RUN0 4 января 2012 в 15:30

У вас пади винда, поэтому вы пишите путь так

"Alex_R" wrote:
var\www\...
, хотя в случае php, html, css надо использовать слеш "/" для указания пути, например так var/www/mysite/public_html

Ошибки php исчите в логе веб-сервера