PHP “未找到异常”

2022-08-30 20:31:24

我有一个有趣的问题。在试图理解为什么某个网站将http代码500返回浏览器时,我发现了该消息

PHP Fatal error:  Class 'MZ\\MailChimpBundle\\Services\\Exception' not found in /var/www/website/vendor/bundles/MZ/MailChimpBundle/Services/MailChimp.php on line 41

在 apache log 中。看看上面提到的一行:

throw new Exception('This bundle needs the cURL PHP extension.');

我现在知道如何让网站工作,但我仍然想知道为什么引发异常的代码(这会导致更有用的日志消息)失败。可能的原因是什么?


答案 1

MZMailChimpBundle 不包含命名空间中命名的类。ExceptionMZ\MailChimpBundle\Services

由于这个简单的事实,并且由于异常应该发出信号的错误消息与集成问题有关(检查curl库),我假设这是一个错误。

原文的意思是,而不是在这里。这是一个与命名空间一起可能发生的常见错误。要修复该文件,请别名/导入为 :\ExceptionException\ExceptionException

namespace MZ\MailChimpBundle\Services;
use Exception;

和/或更改 MZMailChimpBundle/Services/MailChimp 中的行.phpnew

throw new \Exception('This bundle needs the cURL PHP extension.');

另请参阅相关问题:如何使用php的“root”命名空间?以及具有相同类“Namespace\Example”的命名空间找不到错误消息:在PHP中从另一个命名空间中的类调用静态方法


答案 2

扩展@hakre答案,您可以通过以下方式简化其使用:

use \Exception as Exception;

这样,您就可以在不记住反斜杠的情况下引发异常,例如:

throw new Exception('This bundle needs the cURL PHP extension.');

推荐