我有一些调整图像大小的代码,使用 Imagick或 GD,具体取决于服务器上可用的内容。
我正在使用 extension_loaded()
函数测试每一个的可用性。
if (extension_loaded('imagick')) {
$image = new Imagick();
...
}
我有一位用户报告说他们收到了:
Fatal error: Class 'Imagick' not found
什么情况会导致加载了 Imagick 扩展但类不可用?我应该如何进行测试以使我的代码更健壮?
最佳答案
1:始终以不区分大小写的方式进行检查(在比较之前将字符串设为小写)
2:不检查库,检查特性。也许它有一个有问题的库版本或者有其他函数名称
3: 在 php.ini 中你可以通过名称显式禁用一些函数 所以我认为你应该求助于点 #2 并检查 function_exists 而不是 extension_*
此外,查看 /var/log/apache2/errors
或该客户端服务器上的等效项,以检查 ImageMagick 扩展(segmentation fault 或其他类型的应该在那里报告低级错误...)
关于php - 为什么加载的 PHP 扩展会在类实例化时失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1475830/