19

どういうわけか面白い問題があります。特定のウェブサイトが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ログで。上記の行を見てください:

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

サイトを機能させる方法は理解できましたが、例外をスローするためのコード(より役立つログメッセージが表示される)が失敗したのはなぜか疑問に思います。理由は何でしょうか?

4

3 に答える 3

42

MZMailChimpBundleには、名前空間内で名前が付けられたクラスが含まれてません。ExceptionMZ\MailChimpBundle\Services

その単純な事実と、例外が通知するエラーメッセージが統合の問題に関連しているため (curl ライブラリを確認してください)、これはバグであると思います。

本来の意味はここでは\ExceptionありませんException。これは、名前空間で発生する可能性のあるよくある間違いです。ファイルを修正するには、次のようにエイリアス/インポート\ExceptionExceptionます。

namespace MZ\MailChimpBundle\Services;
use Exception;

および/または次のnew行を変更しMZMailChimpBundle/Services/MailChimp.phpます。

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

関連する質問も参照してください: How to use “root” namespace of php? および同じClass 'Namespace\Example' not foundエラー メッセージを持つもの: Calling a static method from a class in another namespace in PHP

于 2012-04-03T21:07:20.993 に答える
1

この行は、PHP 自体の組み込みの Exception クラスではなく、現在の名前空間でユーザー定義の Exception をスローしようとしているように見えます。

于 2012-04-03T20:18:38.117 に答える