为什么加载的PHP扩展会在类实例化时失败?

时间:2009-09-25 07:02:02

标签: php imagemagick

我有一些代码正在调整图像大小,使用Imagick或GD,具体取决于服务器上的可用内容。

我正在使用extension_loaded()函数测试每个的可用性。

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

我有一个用户报告他们正在接收:

  

致命错误:未找到“Imagick”类

什么情况会导致Imagick扩展程序被加载但该类不可用?我应该如何测试以使我的代码更健壮?

4 个答案:

答案 0 :(得分:2)

您可以检查该类是否也存在?

  

class_exists( “Imagick”)

答案 1 :(得分:2)

1:总是以不区分大小写的方式进行检查(在比较之前将字符串设为小写)

2:不检查库,检查功能。也许它的库版本有错误或有其他功能名称

3:在php.ini中,您可以通过名称显式禁用某些功能,所以我认为你应该求助于#2点并检查function_exists而不是扩展名_ *

另外,请查看/var/log/apache2/errors或该客户端服务器上的等效项,以检查ImageMagick扩展程序生成的任何内部错误(segmentation fault或其他类型的低级错误应报告在那里...)

答案 2 :(得分:0)

区分大小写?

'imagick'和Imagick

答案 3 :(得分: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