Tôi đang viết tập lệnh xác thực bằng PHP, được gọi là API, cần trả về 200 500` nếu không.Cách trả lại mã HTTP 500 trên bất kỳ lỗi nào, bất kể số
Vấn đề tôi đang gặp phải là php trả về 200
trong trường hợp điều kiện lỗi, thay vào đó xuất ra lỗi dưới dạng html. Làm thế nào tôi có thể chắc chắn rằng php sẽ trả về mã HTTP 500
trừ khi tôi trả lại chính xác HTTP 200
hoặc HTTP 403
? Nói cách khác, tôi muốn biến bất kỳ và tất cả các điều kiện cảnh báo hoặc lỗi thành 500
s, không có ngoại lệ, sao cho trường hợp mặc định là từ chối yêu cầu xác thực và ngoại lệ là phê duyệt nó với mã 200
.
Tôi đã chơi với set_error_handler()
và error_reporting()
, nhưng cho đến nay không có may mắn. Ví dụ, nếu mã xuất ra một cái gì đó trước khi tôi gửi mã phản hồi HTTP, PHP tự nhiên báo cáo rằng bạn không thể sửa đổi thông tin tiêu đề sau khi xuất ra bất cứ thứ gì. Tuy nhiên, điều này được báo cáo bởi PHP dưới dạng mã phản hồi 200
với html giải thích sự cố. Tôi cần ngay cả loại điều này để được biến thành mã số 500
.
Điều này có thể thực hiện được trong PHP không? Hay tôi cần phải làm điều này ở cấp độ cao hơn như sử dụng mod_rewrite
bằng cách nào đó? Nếu đó là trường hợp, bất kỳ ý tưởng làm thế nào tôi muốn thiết lập đó?
có một báo cáo lỗi cho điều này ở đây: http://bugs.php.net/bug.php?id=50921 - nó seams như nó có thể được sửa chữa. –