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 ответов:
Ваш последний работает, скорее всего, потому что:
- вы вызываете
zones/team.php
изindex.php
, который находится в корне. В этом случае./
Часть правильно идентифицирует ваш текущий каталог.- и для 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, и проверьте чувствительность к регистру пути к файлу.
Предупреждение : Эта функция возвращает FALSE для файлов, недоступных из-за ограничений безопасного режима. Однако эти файлы все еще могут быть включены, если они расположены в safe_mode_include_dir.
Если вы используете относительный путь с file_exists, он возвращает false, если путь не относится к каталогу php.
Проверьте путь еще раз - я думаю, что начальная косая черта является ошибкой, поскольку она может указывать на корень (либо сервер, либо, скорее всего, пользовательское пространство), в то время как ваш выполняемый скрипт может быть расположен в подпространстве...
Tl; dr; Попробуйте удалить первое "/ "