2009-09-25 3 views
3

서버에서 사용할 수있는 내용에 따라 Imagick 또는 GD를 사용하여 이미지의 크기를 조정하는 일부 코드가 있습니다.로드 된 PHP 확장이 클래스 인스턴스화에 실패하는 이유는 무엇입니까?

extension_loaded() 기능을 사용하여 각각의 가용성을 테스트하고 있습니다.

Fatal error: Class 'Imagick' not found

Imagick 확장에 어떤 상황을 초래가로드되는하지만 클래스를 사용할 수 없습니다 :

if (extension_loaded('imagick')) { 
    $image = new Imagick(); 
    ... 
} 

나는 한 명의 사용자가 수신되는 것을보고있다? 내 코드를보다 강력하게 만들려면 어떻게 테스트해야합니까?

+0

확실한 클래스 이름입니까? –

+0

예 imagick API를 따르지 않았지만 사실 내 서버 중 하나에서 동일한 문제가 발생했습니다. API가 둘 이상 있다고 생각합니다. – RageZ

답변

2

1 : 항상 대소 문자를 구분 방식 (을 비교하기 전에 문자열을 소문자로 만들기)

2의 점검을 수행, 라이브러리에 대한 확인 기능을 확인하지 않습니다. php.ini 파일에서 당신이 이름 그래서 당신은 # 2 포인트 대신 extension_의 function_exists 확인에 의존해야한다고 생각 명시 적으로 일부 기능을 비활성화 할 수 있습니다 : 아마 도서관

3 버그 나 다른 함수 이름

을 가지고 버전이 * 또한

, ImageMagick의 확장에 의해 생성 된 내부 오류를 확인하기 위해 해당 클라이언트의 서버에 /var/log/apache2/errors 살펴 또는 동등을

( segmentation fault 또는 낮은 수준의 오류의 다른 유형은 ... 거기에보고받을한다)
+0

이 경우 이전 버전의 클래스 기반이 아닌 함수 라이브러리입니다. 대니 크 로프트 (Danny Croft)가 제안한대로 피쳐 (이 경우 class_exists()를 사용하여 테스트)는 문제를 피한다. – drewm

0

대소 문자를 구별합니까?

'imagick'및 Imagick입니다.

2

클래스가 존재하는지 확인할 수도 있습니다.

class_exists("Imagick")

0
 
    yum install ImageMagick 
    yum install ImageMagick-devel 
    pecl install imagick 
    echo "extension=imagick.so" > /etc/php.d/imagick.ini 
    service httpd restart [/etc/init.d/httpd restart] 
    php -m | grep imagick 

Reference

관련 문제