Na odgałęzienie w Phar, można użyć __DIR__
magii ciągłe, aby uzyskać folder plików PHAR.
Mając to na uwadze, można po prostu użyć
is_file(__DIR__ . DIRECTORY_SEPARATOR . $path);
Aby sprawdzić istnienie danego pliku, poza Phar.
Można to zrobić TYLKO z kodu pośredniczącego i TYLKO w przypadku niestandardowego kodu pośredniczącego, w przeciwieństwie do kodu wygenerowanego przez Phar :: setDefaultStub(). Jeśli musisz sprawdzić pliki w dalszej części, będziesz musiał jakoś udostępnić wartość tej stałej, np. Zmienną globalną, niestandardową stałą niemagiczną lub statyczną właściwość lub coś, z czym inne pliki skonsultują się.
EDYCJA: W rzeczywistości można również użyć dirname(Phar::running(false))
, aby uzyskać folder PHAR z dowolnego miejsca w PHAR. Ta funkcja zwraca pusty ciąg znaków, jeśli nie znajdujesz się w obrębie PHAR, więc jeśli aplikacja jest wykonywana jako PHAR lub bezpośrednio, powinna działać poprawnie, np.
$pharFile = Phar::running(false);
is_file(('' === $pharFile ? '' : dirname($pharFile) . DIRECTORY_SEPARATOR) . $path)
Jaką wersję PHP? Owijarki adresów URL mogą tylko na wersjach => PHP 5.0.0 –
Czy wypróbowałeś następujące zalecenie z dokumentacji dla ['file_exists()'] (http://php.net/file_exists): "Uwaga: Wyniki tej funkcji są buforowane. Zobacz clearstatcache() po więcej szczegółów. "? –
Tak, próbowałem clearstatcache() - ale pamięć podręczna zapisałaby go jako "istnieje", a moim problemem jest to, że go nie znajduje - więc to zdecydowanie nie jest winowajcą. – Lan