I have a somehow funny issue. While trying to understand why a certain website returns http code 500 to browser, I found the message
PHP Fatal error: Class 'MZ\\MailChimpBundle\\Services\\Exception' not found in /var/www/website/vendor/bundles/MZ/MailChimpBundle/Services/MailChimp.php on line 41
in apache log. Looking at the mentioned line:
throw new Exception('This bundle needs the cURL PHP extension.');
I now understand how to get the site working, but I still wonder why the code for throwing the exception (which would have resulted in a more helpful log message) failed. What could be the reason?
\Exceptionwas meant (PHP's native, global
Exceptionclass) instead - hakre 2012-04-03 20:08
throw new \Exception('This bundle ...as that line is namespaced. It's probably worth you check first if there is that exception class within the bundle code. If not, report a bug for that bundle - hakre 2012-04-03 20:13
The MZMailChimpBundle does not contain a class named
Exception within the
Because of that simple fact and as the error message that the exception should signal is related to an integration problem (check for the curl library) I assume that this is a bug.
The original has meant
\Exception and not
Exception here. It's a somewhat common mistake that can happen with namespaces. To fix the file, either alias/import
namespace MZ\MailChimpBundle\Services; use Exception;
and/or change the
new line in
throw new \Exception('This bundle needs the cURL PHP extension.');
See as well the related question: How to use “root” namespace of php? and the one with the same Class 'Namespace\Example' not found error message: Calling a static method from a class in another namespace in PHP.
Looks to me that the line is trying to throw a user defined Exception in the current namespace, not the built-in Exception class of PHP itself