我正在使用imagick为pdf文档创建缩略图。我在这条线上遇到致命的错误..
$imagick->readImage($file .'[0]');
我尝试用try catch包装但是因为我知道这不起作用,因为它是致命的错误,不是例外。我怎样才能优雅地发现这个错误?
我更关心使用PHP来检测错误而不是解决imagick问题,因为用户pdf文件可能会出现任意数量的错误。谢谢!
答案 0 :(得分:1)
不幸的是,在php中捕获致命错误是不可能的。这是给出的。你还可以做几件事:
仍然执行使用register_shutdown_function()
注册的功能。您可以将错误函数放入此函数中,如果readImage()
成功,则注册空函数。
您可以将缩略图生成放入php命令行脚本并使用exec('php thngenerate.php ' . escapeshellarg($file .'[0]'), $out, $return_var);
执行它。如果$return_var != 0
,则出现错误。
与#2类似,但是使用http调用脚本,这次你会看到内部服务器错误。
答案 1 :(得分:0)
它应该显示在服务器错误日志中,这可以让您深入了解它失败的原因,并希望首先防止它发生。除此之外,它取决于你想要做什么。我使用我来调整图像大小和创建缩略图,所以我的检查与此相关;想象力显示正确的尺寸,是否存在缩略图,文件大小大于0。
答案 2 :(得分:-1)
您可以使用set_error_handler设置自定义错误处理程序:
function exceptionErrorHandler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exceptionErrorHandler");