Tôi cần một hàm/tuyên bố include
sẽ chỉ bao gồm một tệp nếu nó tồn tại. Có một trong PHP? Bạn có thể đề xuất sử dụng @include
nhưng có vấn đề với cách tiếp cận đó - trong trường hợp tệp được đưa vào tồn tại, PHP sẽ không xuất hiện cảnh báo nếu trình phân tích cú pháp tìm thấy điều gì đó sai trong tệp được bao gồm.Cách chỉ bao gồm nếu tệp tồn tại
Trả lời
if(file_exists('file.php'))
include 'file.php';
Điều đó sẽ làm những gì bạn muốn
Hoặc không có điều kiện trong một dòng: 'file_exists ($ file) VÀ bao gồm $ file;' ... – ircmaxell
Tốt hơn để sử dụng 'is_file', điều này sẽ tránh các thư mục - cho mã an toàn hơn. –
@hakre Tôi nghĩ rằng tôi đã khắc phục điều đó bằng cách kết hợp nó với câu trả lời của StephaneJAIS. – Riking
Cách sử dụng file_exists
trước include
?
Hãy thử sử dụng file_exists()
if(file_exists($file)){
include $file;
}
Tôi nghĩ rằng bạn phải sử dụng file_exists
, bởi vì nếu có là như vậy bao gồm, nó sẽ được liệt kê ở đây: http://php.net/manual/en/function.include.php
@
chặn thông báo lỗi.
bạn đám mây sử dụng:
$file = 'script.php';
if(file_exists($file))
include($file);
<?php
if(file_exists('file.php'))
include 'file.php';
}else{
header("Location: http://localhost/);
exit;
}
GIẢI THÍCH! GIẢI TRÌNH! GIẢI TRÌNH! –
Điều này trông giống như yêu cầu kinh doanh cụ thể. Bên cạnh đó, nếu bạn làm điều này trong tập tin index.php của bạn, nó sẽ là vòng lặp vô tận. – Roland
Kiểm tra các stream_resolve_include_path
chức năng.
function get_image($img_name) {
$filename = "../uploads/" . $img_name;
$file_exists = file_exists($filename);
if ($file_exists && !empty($img_name)) {
$src = '<img src="' . $filename . '"/>';
} else{
$src = '';
}
return $src;
}
echo get_image($image_name);
Dựa trên câu trả lời @ Select0r, tôi đã kết thúc bằng
if (file_exists(stream_resolve_include_path($file)))
include($file);
làm việc Giải pháp này ngay cả khi bạn viết mã này trong một tập tin đó đã được đưa vào bản thân từ một tập tin trong thư mục khác.
@include($file);
Sử dụng ở phía trước, bỏ qua mọi lỗi mà chức năng đó có thể phát sinh. Đừng lạm dụng điều này vì IT IS WAY SLOWER hơn là kiểm tra nếu, nhưng đó là giải pháp thay thế mã ngắn nhất.
- 1. chỉ bao gồm tệp css trong jsp nếu nó tồn tại
- 2. Chỉ tạo một tệp nếu không tồn tại
- 3. Bao gồm/Tập lệnh nguồn nếu nó tồn tại trong Bash
- 4. Tạo tệp nếu tệp không tồn tại
- 5. Chỉ mkdir nếu nó không tồn tại
- 6. Xóa tệp nếu nó tồn tại
- 7. Xác định tồn tại thời gian biên dịch bao gồm các tệp trong C++
- 8. xóa tệp nếu nó tồn tại; python
- 9. Bao gồm jQuery, nếu không bao gồm đã
- 10. kiểm tra xem lớp học có tồn tại trong tệp mà không yêu cầu/bao gồm
- 11. Cách ghi tệp nếu thư mục gốc không tồn tại?
- 12. Bao gồm tệp .cpp?
- 13. Nếu tồn tại hoặc tồn tại?
- 14. HttpHandler chỉ cháy nếu tập tin không tồn tại
- 15. Codeigniter: Cách bao gồm các tệp javascript
- 16. HSQL: Tạo chỉ số nếu không tồn tại
- 17. Tại sao scrollWidth chỉ bao gồm phần đệm trái?
- 18. php bao gồm có cách nào để bao gồm một tệp tương đối chỉ với tài liệu đó không?
- 19. Làm cách nào để bao gồm tệp trong cấu hình Apache mà không tạo ra lỗi khi không tồn tại?
- 20. Chỉ gọi phương thức nếu nó tồn tại
- 21. Đặt không nếu chỉ mục mảng numpy không tồn tại
- 22. VS PostBuild Event - Sao chép tệp nếu nó tồn tại
- 23. Tạo nếu không tồn tại
- 24. Python - Chỉ chuyển đối số nếu biến tồn tại
- 25. Jade: Cách bao gồm tệp javascript
- 26. Bao gồm tệp lô trong tệp lô
- 27. .htaccess chuyển hướng nếu tệp không tồn tại
- 28. Java FileOutputStream Tạo Tệp nếu không tồn tại
- 29. cách tạo nếu không tồn tại một DB DB mới?
- 30. Bỏ qua tải xuống nếu tệp tồn tại trong wget?
Bạn có yêu cầu điều gì đó khác với những câu trả lời này đang cung cấp cho bạn không? Tôi đang có một thời gian khó tin rằng bạn biết '@' và 'include()' nhưng không phải 'file_exists()'. – JakeParis
@JMC Creative, tôi biết phương thức 'file_exists()'. Đáng lẽ tôi phải đề cập điều đó. –