На заглушке в ФАРАХ, вы можете использовать __DIR__
магию константа, чтобы получить папку файла PHAR.
Имея это в виду, вы можете просто использовать
is_file(__DIR__ . DIRECTORY_SEPARATOR . $path);
Чтобы проверить существование файла в вне ФАР.
Вы можете ТОЛЬКО делать это из заглушки и ТОЛЬКО, если это пользовательский заглушка, а не один, сгенерированный Phar :: setDefaultStub(). Если вам нужно проверить файлы дальше по строке, вам нужно будет как можно скорее получить значение этой константы, например глобальную переменную, пользовательскую немагическую константу или статическое свойство или что-то еще, с чем советуют другие файлы.
EDIT: На самом деле вы также можете использовать dirname(Phar::running(false))
, чтобы получить папку PHAR из любой точки PHAR. Эта функция возвращает пустую строку, если вы не находитесь в PHAR, поэтому независимо от того, выполняется ли ваше приложение как PHAR или напрямую, оно должно работать нормально, например.
$pharFile = Phar::running(false);
is_file(('' === $pharFile ? '' : dirname($pharFile) . DIRECTORY_SEPARATOR) . $path)
Какая версия PHP? Оболочки URL могут только на verions => PHP 5.0.0 –
Вы пробовали следующую рекомендацию из документации для ['file_exists()'] (http://php.net/file_exists): «Примечание: результаты этой функции кэшируются. Подробнее см. clearstatcache(). "? –
Да, я пробовал clearstatcache() - но кеш сохранил бы его как «существует», и моя проблема в том, что он его не находит - так что это определенно не преступник. – Lan