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


if(file_exists("./squadra/photos/photog.jpg")) {
    echo "### YES ###";
} else {
    echo "### NO ###";
}

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

Править

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

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";              
}

Он говорит " Да " на обоих; но на команде.php я использую ./ и на AJAX.РНР ../ ...почему это работает???

7 4

7 ответов:

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

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

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

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

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

Удачи!

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

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

Если squadra является каталогом под каталогом, в котором выполняется скрипт PHP, попробуйте

if(file_exists('./squadra/photos/photog.jpg')) {
    echo "### YES ###";
} else {
    echo "### NO ###";
} 

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

Php file_exists

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

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

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

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