CodeIgniter CI_Exceptions :: show_exception после обновления до PHP 7

Я использовал CodeIgniter 3.0.0 с PHP 5.6.

Вчера я обновился до PHP 7 и начал получать следующую ошибку:

Uncaught TypeError: Argument 1 passed to CI_Exceptions::show_exception() must be an instance of Exception, instance of Error given, called in /my/file/path/app/system/core/Common.php on line 658 and defined in /my/file/path/hgx_portal/app/system/core/Exceptions.php:190 Stack trace: #0 /my/file/path/hgx_portal/app/system/core/Common.php(658): CI_Exceptions->show_exception(Object (Error)) #1 [internal function]: _exception_handler(Object(Error)) #2 {main} thrown in /my/file/path/hgx_portal/app/system/core/Exceptions.phpon line 190 

Related of "CodeIgniter CI_Exceptions :: show_exception после обновления до PHP 7"

Это проблема с информацией в CodeIgniter 3.0.0, см. Здесь проблему github и журнал изменений ниже:

Исправлена ​​ошибка (# 4137) -: doc: Error Handling <general/errors> прерывания для новых исключений ошибок в PHP 7.

Это связано с тем, что set_exception_handler () изменил поведение в PHP 7.

Код, который реализует обработчик исключений, зарегистрированный с помощью set_exception_handler () с использованием объявления типа Exception, приведет к фатальной ошибке при вызове объекта Error.

Если обработчик должен работать как на PHP 5, так и на 7, вы должны удалить объявление типа из обработчика, в то время как код, который переносится для работы на PHP 7, может просто заменить вместо объявления типа Exception на Throwable.

 <?php // PHP 5 era code that will break. function handler(Exception $e) { ... } set_exception_handler('handler'); // PHP 5 and 7 compatible. function handler($e) { ... } // PHP 7 only. function handler(Throwable $e) { ... } ?> 

Обновление до версии 3.0.2 позволит исправить вашу проблему.