Phần khó của việc này là trình duyệt không chịu tiết lộ bất kỳ dạng thông báo lỗi nào. Khi điều đó xảy ra, tôi muốn đi tới dòng lệnh và thử nó, do đó loại bỏ máy chủ web như một biến.
Từ cuộc trò chuyện, chúng tôi biết rằng dòng lệnh đã hiển thị lỗi như mong đợi, nhưng không làm như vậy một cách duyên dáng:lỗi xuất hiện và tập lệnh bị tạm dừng. Đó là một sự cố nghiêm trọng, một sự cố không phải do máy chủ web.
Với sự ra đời của \Throwable
, các kịch bản mà PHP chết cứng ngày càng trở nên ít hơn. Vì vậy, với nỗ lực bắt kịp hơi thở đang chết dần của PHP, chúng tôi đã triển khai register_shutdown_function
điều đó đã kéo error_get_last
trong nỗ lực tìm ra những gì, nếu có, đã được nói ngay trước khi nổ tung.
Điều này đã tiết lộ một cách ngắn gọn, thông báo lỗi trong trình duyệt (lần này là sử dụng một trình duyệt khác). Tuy nhiên, điều này đã không thể lặp lại. Thông tin chi tiết tại thời điểm này là bộ nhớ đệm:composer dump-autoload
đã khắc phục sự cố!
Tôi nghi ngờ điều gì đã xảy ra là thế này:
-
Eloquent
đã ném một ngoại lệ - PHP đã tạo ra điều đó thông qua các lớp xử lý ngoại lệ của Laravel
- Tại một số thời điểm, PHP đã cố gắng tải một lớp không có trong trình tải tự động
- PHP gặp sự cố khó khăn (đây là một trong những trường hợp PHP 7.0 gặp sự cố)
Bằng cách chạy composer dump-autoload
, tất cả các lớp "bị thiếu" đã được đưa vào mục đích của trình tải tự động và khi thử lại, trình tự mã chính xác đã xảy ra.