Tại cuống của Phar, bạn có thể sử dụng __DIR__
kỳ diệu liên tục để lấy thư mục của tệp PHAR.
Với ý nghĩ đó, bạn chỉ có thể sử dụng
is_file(__DIR__ . DIRECTORY_SEPARATOR . $path);
Để kiểm tra sự tồn tại của một tập tin bên ngoài Phar.
Bạn CHỈ có thể thực hiện việc này từ gốc, và CHỈ nếu nó là một nhánh tùy chỉnh, trái ngược với câu lệnh được tạo bởi Phar :: setDefaultStub(). Nếu bạn cần kiểm tra các tập tin ở dưới dòng, bạn sẽ phải làm cho giá trị của hằng số có sẵn bằng cách nào đó, như biến toàn cầu, hằng số tùy chỉnh không kỳ diệu hoặc thuộc tính tĩnh hoặc thứ gì đó mà các tệp khác tham khảo.
EDIT: Trên thực tế, bạn cũng có thể sử dụng dirname(Phar::running(false))
để nhận thư mục PHAR từ bất kỳ đâu trong PHAR. Hàm đó trả về một chuỗi rỗng nếu bạn không nằm trong PHAR, do đó, cho dù ứng dụng của bạn được thực hiện dưới dạng PHAR hay trực tiếp, nó sẽ hoạt động tốt, ví dụ:
$pharFile = Phar::running(false);
is_file(('' === $pharFile ? '' : dirname($pharFile) . DIRECTORY_SEPARATOR) . $path)
Nguồn
2013-08-26 11:23:07
Phiên bản PHP nào? Trình bao bọc URL có thể chỉ trên verions => PHP 5.0.0 –
Bạn đã thử đề xuất sau từ tài liệu cho ['file_exists()'] (http://php.net/file_exists): "Lưu ý: Kết quả của hàm này Xem lại clearstatcache() để biết thêm chi tiết. "? –
yea, tôi đã thử clearstatcache() - nhưng bộ nhớ cache sẽ lưu trữ nó như là 'tồn tại' và vấn đề của tôi là nó không tìm thấy nó - vì vậy đó chắc chắn không phải là thủ phạm. – Lan