php прямой путь file_exists () - PullRequest
1 голос
/ 23 июля 2011

Я использую file_exists () в классе и хочу использовать его в корне, а также при добавлении в другую папку, чтобы проверить, существует ли файл.

В настоящее время у меня есть:

if (file_exists("./photos/".$this->id.".jpg") ){ 

//

}

Работает при включении в корень, но не при включении в папку (для ajax).

Что я могу сделать, чтобы это было прямым (я думаю, это правильное слово)? Я не могу вставить в него URL своего сайта из-за характера функции.

Ответы [ 5 ]

2 голосов
/ 23 июля 2011

Самый простой способ - использовать абсолютный (полный) путь:

if (file_exists("/full/path/to/photos/".$this->id.".jpg") ){ 
    //
}

Таким образом, независимо от того, где выполняется ваш скрипт, полный путь, который никогда не изменится, всегда будет работать.

Конечно, вы, вероятно, не хотите жестко запрограммировать полный путь в ваш PHP-скрипт ...


Таким образом, вы можете использовать dirname(__FILE__), чтобы получить полный путь к каталогу, в котором содержится файл, в который вы записали dirname(__FILE__), и оттуда перейти к относительному.

Например:

$path = dirname(__FILE__) . '/../../files/photos/'.$this->id.".jpg";
if (file_exists($path)) {
    // 
}

(при тестировании вы, возможно, захотите сначала отобразить значение $path, чтобы убедиться, что вы правильно указали путь)


Примечание: если вы работаете с PHP> = 5.3, вы можете использовать __DIR__ вместо dirname(__FILE__).


Соответствующие справочные страницы:

0 голосов
/ 30 января 2015

dirname ( FILE ) = "../"

dirname (dirname ( FILE )) =" ../../"

dirname (dirname (dirname ( FILE ))) = "../../../"

U может попробовать его.

0 голосов
/ 23 июля 2011

Предполагая, что папка "photos" находится на том же уровне, что и класс, содержащий ваш код:

if (file_exists(dirname(__FILE__)."/../photos/".$this->id.".jpg") ){ 

//

}
0 голосов
/ 23 июля 2011

Более или менее часто используется dirname(__FILE__) для получения пути к самому файлу php независимо от того, вызывается он напрямую или включен. Так что в вашей ситуации вы могли бы написать:

if(file_exists(dirname(__FILE__) . '/photos/'.$this->id.'.jpg'))
0 голосов
/ 23 июля 2011

Похоже, вам просто нужно указать полный путь из корневого каталога в код.

if (file_exists("/root_dir/path/to/photos/".$this->id.".jpg") )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...