2012-04-03 2 views
9

나는 다소 웃기는 문제가 있습니다. 특정 웹 사이트가 브라우저에 HTTP 코드 500을 반환 이유를 이해하려고 노력하는 동안 , 나는 아파치 로그에 메시지를PHP "예외를 찾을 수 없습니다"

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

을 발견했다.

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

내가 지금 사이트 작업을 진행하는 방법을 이해하지만, 난 여전히 (더 도움이되는 로그 메시지 이어질 것) 예외를 던지는에 대한 코드가 실패한 이유를 궁금해 : 언급 라인에서 찾고있다. 그 이유는 무엇일까요?

+3

클래스 정의가 누락되었습니다. 클래스가 없습니다. 원본에 실제 파일이 있는지 확인하고 자동 공급기가 올바르게 구성되었는지 다시 확인하십시오. 이것은 통합과 관련이 있기 때문에, 이것이 벤더에 의해 완전히 테스트되지 않았을 수도 있고'\ Exception' (PHP의 네이티브 전역 Exception 클래스)가 대신 사용되었을 수도 있습니다. – hakre

+0

하지만 그 이름을 가진 전역 클래스가있는 경우 어떻게 실패 할 수 있습니까? 글로벌 Exception 클래스의 호출이이 라인과 다르게 보일까요? (저는 PHP 프로가 아니기 때문에 여기에 기본적인 지식이 부족합니다.) –

+3

네, 그럴 것입니다 :'throw new \ Exception ('This bundle ...'이 네임 스페이스로되어 있습니다. 번들 코드 내에 예외 클래스가 있다면 그 번들에 대한 버그를보고하십시오. – hakre

답변

27

MZMailChimpBundleMZ\MailChimpBundle\Services 네임 스페이스 내에서 Exception라는 이름의 클래스를 포함하지 않는의 내장 예외 클래스의 사용자 정의 예외를 던질하려고 나에게 보이는 .

단순한 사실 때문에 예외가 신호해야하는 오류 메시지가 통합 문제 (컬 라이브러리 검사)와 관련되어 있기 때문에 이것이 버그라고 가정합니다.

원래의 의미는 \Exception이고 여기에 Exception이 아닙니다. 네임 스페이스에서 발생할 수있는 다소 일반적인 실수입니다.

namespace MZ\MailChimpBundle\Services; 
use Exception; 

및/또는 MZMailChimpBundle/Services/MailChimp.php에서 new 라인 변경 : Exception로 파일 중 하나를 별칭/수입 \Exception를 해결하려면뿐만 아니라 참조 관련된 질문

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

을 : How to use “root” namespace of php?와 함께 하나 동일한 클래스 '네임 스페이스 \ 예제'를 찾을 수 없습니다. 오류 메시지 : Calling a static method from a class in another namespace in PHP.

+0

큰 설명 감사합니다. –

+0

+1 내 문제가 수정되었습니다. –

+0

[miguel250 by 72297152에서 고정 2012-08-11] (https://github.com/miguel250/MZMailChimpBundle/commit/722971523da673353a4a4285574ed914e57a74ef) – hakre

1

라인은 현재 이름 공간이 아니라 PHP 자체

관련 문제