Bagian yang sulit dari ini adalah penolakan keras dari browser untuk mengungkapkan segala bentuk pesan kesalahan. Ketika itu terjadi, saya ingin pergi ke baris perintah dan mencobanya, sehingga menghilangkan server web sebagai variabel.
Dari obrolan, kami mengetahui bahwa baris perintah menunjukkan kesalahan seperti yang diharapkan, tetapi tidak melakukannya dengan baik:kesalahan adalah keluaran, dan skrip dihentikan. Itu adalah kerusakan yang parah, yang tidak disebabkan oleh server web.
Dengan diperkenalkannya \Throwable
, skenario di mana PHP mati menjadi semakin sedikit. Jadi, dalam upaya untuk menangkap nafas PHP yang sekarat, kami menerapkan register_shutdown_function
yang menarik error_get_last
dalam upaya untuk mencari tahu apa, jika ada, yang dikatakan sebelum meledak.
Ini mengungkapkan, secara singkat, pesan kesalahan di browser (kali ini menggunakan browser yang berbeda). Namun, ini tidak berulang. Wawasan pada saat ini adalah caching:composer dump-autoload
memperbaiki masalahnya!
Saya menduga apa yang terjadi adalah ini:
Eloquent
memberikan pengecualian- PHP mengembangkannya melalui kelas penanganan pengecualian Laravel
- Pada titik tertentu, PHP mencoba memuat kelas yang tidak ada di autoloader
- PHP mengalami crash (ini adalah salah satu kasus di mana PHP 7.0 gagal)
Dengan menjalankan composer dump-autoload
, semua kelas yang "hilang" dibawa ke ruang lingkup pemuat otomatis dan, ketika dicoba lagi, urutan kode yang benar terjadi.