Fatal error: Exception thrown without a stack frame in Unknown on line 0

วันนี้ผมสั่ง composer update บนเครื่อง production ได้ผมได้เจอกับ error ตัวนี้ เคยแต่เห็นคนอื่นเจอ วันนี้ผมได้เจอกับตัวเอง

Fatal error: Exception thrown without a stack frame in Unknown on line 0

สำหรับโปรแกรมเมอร์ไม่ว่าจะเขียนภาษาไหนก็เถอะ แต่ถ้าเจอ error และพออ่านอังกฤษออกก็คงต้องอุทานว่า มันอะไรเนี่ย? ซึ่งจริงๆ วิธีแก้ก็ไม่ยาก (กว่าผมจะงมหาสาเหตุเจอก็โอยาวล่ะ)

วิธ๊แก้คือลง xdebug แล้วรับ environment ให้เป็น production แล้วเปิดดูใหม่ครับ รับรองว่า error จะงอกงามมาให้ดู กรณีของผมเจอ

Fatal error: Uncaught exception ‘ReflectionException’ with message ‘Class InvalidUserException does not exist’ in D:\xxxxxxx\vendor\laravel\framework\src\Illuminate\Exception\Handler.php on line 305
( ! ) ReflectionException: Class InvalidUserException does not exist in D:\xxxxxxx\vendor\laravel\framework\src\Illuminate\Exception\Handler.php on line 305

ซึ่งถ้าใครเห็น error ตัวใหม่นี้จะร้องอ้อเลย นั่นก็คือมันเกิด error ภายในตัว exception handler นั้่นเองครับ เมื่อไม่มี handler ที่ใช้งานได้ให้ทำงาน มันจึงเกิด error นรกแบบข้างบนนั้นเองครับ

=======================================

Today, I run “composer update” in project that I wrote with Laravel on production server and found this error.

Fatal error: Exception thrown without a stack frame in Unknown on line 0

It’s suck as you see it. I don’t know where file or line number that cause this error. After I spend hour for it and I found solution. First I set project on local to work as production by set environment detector to look my computer as production. Second I installed xdebug on my apache and I saw it.

Fatal error: Uncaught exception ‘ReflectionException’ with message ‘Class InvalidUserException does not exist’ in D:\xxxxxxx\vendor\laravel\framework\src\Illuminate\Exception\Handler.php on line 305
( ! ) ReflectionException: Class InvalidUserException does not exist in D:\xxxxxxx\vendor\laravel\framework\src\Illuminate\Exception\Handler.php on line 305

If you see these lines, you shound figure out that error is from exception handler itself so error can’t show it and cause error at line 0.

I hope this post can help some people too.

Leave a Reply