PHP 致命错误:未捕获的错误:使用 Laravel 5.8 和 PHP 7.4 调用未定义函数 Whoops\Exception\xdebug_is_enabled()
Posted
技术标签:
【中文标题】PHP 致命错误:未捕获的错误:使用 Laravel 5.8 和 PHP 7.4 调用未定义函数 Whoops\\Exception\\xdebug_is_enabled()【英文标题】:PHP Fatal error: Uncaught Error: Call to undefined function Whoops\Exception\xdebug_is_enabled() with Laravel 5.8 and PHP 7.4PHP 致命错误:未捕获的错误:使用 Laravel 5.8 和 PHP 7.4 调用未定义函数 Whoops\Exception\xdebug_is_enabled() 【发布时间】:2021-04-20 22:21:23 【问题描述】:希望你做得很好,我正在做一个几个月以来我没有做过的 Laravel 项目,发现每当出现异常时,我都会收到以下错误:
[2021 年 1 月 15 日星期五 15:51:11] php 致命错误:未捕获的错误:调用 /var/www/html/project/vendor/filp/whoops/src/ 中的未定义函数 Whoops\Exception\xdebug_is_enabled()哎呀/异常/Inspector.php:254
堆栈跟踪:
#0 /var/www/html/project/vendor/filp/whoops/src/Whoops/Exception/Inspector.php(175): Whoops\Exception\Inspector->getTrace()
#1 /var/www/html/project/vendor/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php(280): Whoops\Exception\Inspector->getFrames()
#2 /var/www/html/project/vendor/filp/whoops/src/Whoops/Handler/PrettyPageHandler.php(197): Whoops\Handler\PrettyPageHandler->getExceptionFrames()
#3 /var/www/html/project/vendor/filp/whoops/src/Whoops/Run.php(296): Whoops\Handler\PrettyPageHandler->handle()
#4 /var/www/html/project/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(345): Whoops\Run->handleException()
#5 /var/www/html/project/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(324): Illuminate\Foundation\Exceptions\Handler->renderExceptionWithWhoops()
#6 /var/www/html/project/ in /var/www/html/project/vendor/filp/whoops/src/Whoops/Exception/Inspector.php on line 254
有没有人见过这个错误并且知道如何解决它? 先谢谢了。
【问题讨论】:
您对此有何疑问?你能分享更多细节,以及你解决问题的尝试吗? 我添加了对发生的事情的简要描述,解决方案发布在下面。 【参考方案1】:原来我遇到了这个问题,发现只需将 "filp/whoops": "^2.0" 更新为 "filp/whoops": "^2.9" 问题就解决了。
【讨论】:
您应该将此标记为正确答案。有同样的问题,也通过更新到 2.9 解决了。 完成!很高兴它对您有所帮助。 问题与 xdebug 有关,xdebug 3 移除了 xdebug_is_enabled() 函数,因此您可以使用将 xdebug3 降级为 xdebug2 我还必须遵循此处的解决方案才能使其正常工作:***.com/a/59004284/2511355 @AnuraghKP Xdebug 2 不再受支持,存档的文档将由作者托管,直到 2021 年 12 月 31 日。临时降级可能可以让事情立即运行,但修复使用 Xdebug 3 的项目是唯一的永久解决方案恕我直言。【参考方案2】:如果您在 2.9 之前运行任何版本的“filp/whoops”,则 sudo pecl install -f xdebug-2.9.8 以安装以前的版本,因为 xdebug 3 及更高版本删除了函数 xdebug_is_enabled。 https://xdebug.org/docs/upgrade_guide
然后在php.ini中加入“zend_extension=/usr/lib/php/20190902/xdebug.so”
"filp/whoops": "^2.9" 应该能够支持 xdebug 3,因为它会检查 xdebug_is_enabled 是否存在,因为 2.9.1 正在检查 xdebug_is_enabled 函数 https://github.com/filp/whoops/compare/2.9.0...2.9.1 https://github.com/filp/whoops/commit/dc30a4cb68b45a5fb65e190cf0a6b58d3d3ef096
如果您已经在php.ini中添加了zend_extension=/usr/lib/php/20190902/xdebug.so",请在安装xdebug-2.9.8之前将其删除,否则会导致安装出错
此外,不要只在 composer.lock 中更改您的包版本,它实际上不会更改包版本,因为文件下载链接也在 composer.lock 中。
【讨论】:
以上是关于PHP 致命错误:未捕获的错误:使用 Laravel 5.8 和 PHP 7.4 调用未定义函数 Whoops\Exception\xdebug_is_enabled()的主要内容,如果未能解决你的问题,请参考以下文章
PHP“致命错误:未捕获错误:调用成员函数prepare()为null”
PHP 致命错误:未捕获的错误:使用 Laravel 5.8 和 PHP 7.4 调用未定义函数 Whoops\Exception\xdebug_is_enabled()
如何修复 PHPUnit 中的“PHP 致命错误:未捕获的 TypeError:getTest() 参数”错误