为什么加载的PHP扩展在类实例化时会失败?
我有一些代码,根据服务器上的可用内容,使用或GD调整图像大小 我正在使用为什么加载的PHP扩展在类实例化时会失败?,php,imagemagick,Php,Imagemagick,我有一些代码,根据服务器上的可用内容,使用或GD调整图像大小 我正在使用extension\u loaded()函数测试每种方法的可用性 if (extension_loaded('imagick')) { $image = new Imagick(); ... } 我有一个用户报告他们正在接收: 致命错误:找不到类“Imagick” 什么情况会导致加载Imagick扩展,但类不可用?我应该如何进行测试以使代码更加健壮?区分大小写 “imagick”和imagick您是否可以检
extension\u loaded()
函数测试每种方法的可用性
if (extension_loaded('imagick')) {
$image = new Imagick();
...
}
我有一个用户报告他们正在接收:
致命错误:找不到类“Imagick”
什么情况会导致加载Imagick扩展,但类不可用?我应该如何进行测试以使代码更加健壮?区分大小写
“imagick”和
imagick
您是否可以检查该类是否也存在
类_存在(“Imagick”)
1:始终以不区分大小写的方式进行检查(在比较之前将字符串设置为小写) 2:不检查库,检查功能。可能它的库版本有缺陷或者有其他函数名 3:在php.ini中,您可以通过名称显式禁用某些函数,因此我认为您应该求助于第2点,并检查函数是否存在,而不是扩展_* 此外,请查看该客户端服务器上的
/var/log/apache2/errors
或同等版本,以检查ImageMagick扩展生成的任何内部错误(或其他类型的低级错误应在其中报告…)
yum安装ImageMagick
yum安装ImageMagick-devel
pecl安装imagick
echo“extension=imagick.so”>/etc/php.d/imagick.ini
服务httpd重启[/etc/init.d/httpd重启]
php-m| grep imagick
你确定这是正确的类名吗?是的,我没有遵循imagick API,但我的一台服务器上实际上也有同样的问题,我认为有不止一个API,所以可能这就是为什么在这种情况下,原来有一个旧版本的库是基于函数的,而不是基于类的。按照Danny Croft的建议,测试功能(在这种情况下,使用
class\u exists()
)可以避免问题。好的建议。
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