Ответ 1
Установите $dir = __DIR__;
и используйте if (file_exists($dir . '/../../foo/bar')
. Это будет работать так.
Я пишу приложение PHP CLI, которое загружает файлы YAML. При попытке сделать это в сеансе xDebug:
if (file_exists(__DIR__ . '/../../foo/bar')
{
/* ... */
}
__DIR__
allways xdebug:
, который всегда будет false
от file_exists()
.
Есть ли какая-нибудь работа?
Установите $dir = __DIR__;
и используйте if (file_exists($dir . '/../../foo/bar')
. Это будет работать так.
Дело в том, что ваш отладчик показывает вам неправильное значение, поскольку синтаксический анализатор DIR уже был заменен вашим script.
Все объяснение можно найти здесь:
Как я могу получить постоянную магию PHP __FILE__ с Eclipse и PDT
Полученный результат не является неправильным. FILE - специальная константа, которая оценивается во время анализатора.
В качестве альтернативы замените константу __DIR__
функцией dirname(__FILE__)
if (file_exists(dirname(__FILE__) . '/../../foo/bar')
{
/* ... */
}