Nếu cuộc gọi để hủy liên kết() trả về false cho đường dẫn đã chỉ định, làm cách nào để tìm hiểu lý do của sự cố là (ví dụ: EISDIR, ENOENT, ELOOP, v.v.)? PHP 5.x chạy trên redhat linux.Cách nhận kết quả lỗi của việc hủy liên kết
Trả lời
đây là một cách
unlink("/path/that/does/not/exist");
print_r(error_get_last());
Xem Error handling để biết thêm chi tiết
Tôi muốn xử lý lỗi này theo lập trình, nhưng hiện tại tôi chỉ đăng nhập bằng cách sử dụng đề xuất này: - if (@unlink ('xyz.abc') === false) {$ e = error_get_last (); trigger_error ($ e ['message'], E_USER_NOTICE); } –
Tôi không nghĩ rằng có thể lấy lại bất kỳ mã lỗi nào do hệ thống phát hành. Đó có thể là do thực tế rằng PHP được cho là có thể di chuyển được và các hệ điều hành khác nhau có các phương pháp báo cáo lỗi khác nhau.
Tất nhiên, bạn có thể thực hiện exec('rm ....')
và nhận lại mức lỗi nhưng điều đó không thực sự thuận tiện và làm cho ứng dụng của bạn phụ thuộc vào quyền exec()
.
Nếu không, nếu bạn thực sự, thực sự cần điều này, chỉ có một cách giải quyết rất khó khăn nảy sinh trong đầu: Tạo một custom error handler function để tìm nạp lý do cho sự thất bại từ cảnh báo unlink
ném - ví dụ: kiểm tra "Quyền bị từ chối" hoặc chỉ tìm nạp toàn bộ thông báo lỗi.
Tạo hàm bao bọc xung quanh unlink
đặt và đặt lại trình xử lý lỗi. Một cái gì đó như thế này:
function my_unlink($file)
{
set_error_handler("my_error_handler");
unlink($file);
restore_error_handler();
}
bạn sẽ bị trôi dạt.
Nếu ai biết một giải pháp tốt hơn - Tôi muốn được quan tâm để nghe về nó, quá ....
này là không thể, tôi sợ. Đây là mã C xử lý unlink trong php 5.3.
ret = VCWD_UNLINK(url); <-- calls unlink(2)
if (ret == -1) {
if (options & REPORT_ERRORS) {
php_error_docref1(NULL TSRMLS_CC, url, E_WARNING, "%s", strerror(errno));
}
return 0;
}
như bạn có thể thấy, errno không được trả lại và không có cách nào để truy cập sau này.
Đã có một bugreport về điều này, nhưng dường như không thu hút được quá nhiều sự chú ý. ;)
Xem thêm điều này discussion
- 1. cách tạo liên kết để hủy đăng ký nhận email
- 2. jQuery: cách hủy liên kết sự kiện được liên kết với đối tượng tài liệu?
- 3. Làm cách nào để hủy liên kết dự án?
- 4. Nhận kết quả của Mã số
- 5. Cách bỏ qua gọi lại liên kết trong tiêu hủy
- 6. Cách liên kết, hủy liên kết và khôi phục (nhấp) các sự kiện trong JQuery
- 7. Lỗi liên kết Q_OBJECT!
- 8. Hủy liên kết PHP Không hoạt động
- 9. Lỗi liên kết Javascript của Google Chrome
- 10. Lỗi liên kết iostream
- 11. Boost.Asio lỗi liên kết
- 12. kết quả của std.algorithm.map
- 13. Lỗi liên kết LNK2001
- 14. Nhận kết quả từ XP_CMDSHELL
- 15. Truy cập biến riêng tư trong Kết quả danh mục trong lỗi trình liên kết
- 16. Kết quả của việc chia cho số không là gì?
- 17. Làm cách nào để liên kết kết quả của DataTable.Select() với điều khiển ListBox?
- 18. Kết hợp kết quả công việc trong cần tây
- 19. Đúc kết quả của TableOperation.Retrieve
- 20. Không thể `pha liên kết` một keg bị hủy liên kết
- 21. Mẫu C++, liên kết lỗi
- 22. Lỗi liên kết MinGW: winsock
- 23. Nhận kết quả từ Biểu thức
- 24. Chèn kết quả của quy trình được lưu trữ từ máy chủ được liên kết
- 25. Liên kết/hủy liên kết đối tượng jquery để một yếu tố
- 26. Homebrew liên kết mềm Lỗi
- 27. phụ thuộc => hủy trên liên kết "has_many through"
- 28. Lỗi liên kết std.net.curl trong Linux
- 29. Cách tốt nhất để triển khai liên kết hủy đăng ký nhận bản tin của bạn là gì?
- 30. Lỗi liên kết tham chiếu không xác định của QMediaPlayer
Chào mừng bạn đến với SO. Câu hỏi hay! –