file_exists () не находит файл - PullRequest
       18

file_exists () не находит файл

4 голосов
/ 13 ноября 2010
if(file_exists("./squadra/photos/photog.jpg")) {
    echo "### YES ###";
} else {
    echo "### NO ###";
}

если я запускаю эту функцию в /zones/team.php, она работает (вывод YES). Если я запускаю эту функцию в /auth/ajax.php, выведите NO. Почему?

EDIT

Итак, я провожу эксперимент.

1 - Если я попробую:

// file on /zones/team.php
if(file_exists($_SERVER['DOCUMENT_ROOT']."/squadra/photos/provag.jpg")) {
    echo "YES";
} else {
    echo "NO";              
}

// file on /auth/ajax.php
if(file_exists($_SERVER['DOCUMENT_ROOT']."/squadra/photos/provag.jpg")) {
    echo "YES";
} else {
    echo "NO";              
}    

это говорит НЕТ на обоих;

2 - Если я попробую:

// file on /zones/team.php
if(file_exists("./squadra/photos/provag.jpg")) {
    echo "YES";
} else {
    echo "NO";              
}


// file on /auth/ajax.php
if(file_exists("../squadra/photos/provag.jpg")) {
    echo "YES";
} else {
    echo "NO";              
}

это говорит ДА на обоих; Но на team.php я использую ./ и на ajax.php ../ ... почему это работает ???

Ответы [ 7 ]

3 голосов
/ 13 ноября 2010

Ваш последний работает, скорее всего, потому что:

  1. Вы звоните zones/team.php из index.php, который находится в корне. В этом случае ./ деталь правильно идентифицирует ваш текущий каталог.
  2. А для ajax вы должны называть его прямо как auth/ajax.php, а не как index.php?type=jx&do=auth/ajax, который будет таким же, как номер 1 Следовательно, это не тот случай, вам нужно сначала выйти из auth с помощью ../, а затем продолжить с squadra/....

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

2 голосов
/ 13 ноября 2010

После получения косой черты file_exist перейдет в корень жесткого диска.

Используйте $ _SERVER ['DOCUMENT_ROOT'] перед ним или удалите косую черту и используйте ../ и т. Д.,и т.д.

2 голосов
/ 13 ноября 2010

Убедитесь, что вы рассматриваете папку, которую вы набрали. Вы начинаете адрес файла с / 100 * * серверная сторона root. Если вам нужен локальный каталог, удалите предыдущий / или введите весь путь.

Во-вторых, убедитесь, что у вас нет опечаток.

Удачи!

1 голос
/ 13 ноября 2010

Проверьте статус php safe_mode и проверьте чувствительность к регистру пути к файлу.

php file_exists

Внимание!недоступен из-за ограничений безопасного режима.Однако эти файлы все еще могут быть включены, если они находятся в safe_mode_include_dir.

1 голос
/ 13 ноября 2010

Если squadra - это каталог в каталоге, в котором работает PHP-скрипт, попробуйте

if(file_exists('./squadra/photos/photog.jpg')) {
    echo "### YES ###";
} else {
    echo "### NO ###";
} 
0 голосов
/ 13 ноября 2010

Проверьте путь еще раз - я думаю, что косая черта является ошибкой - поскольку она может указывать на корень (либо сервер, либо, что более вероятно, пространство пользователя) - в то время как ваш исполняемый скрипт может быть расположен в подпуть..

tl; dr;Попробуйте удалить первый "/"

0 голосов
/ 13 ноября 2010

Если вы используете относительный путь с file_exists, он возвращает false, если путь не относится к каталогу php.

...