首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在PHP中捕获imagick致命错误

如何在PHP中捕获imagick致命错误
EN

Stack Overflow用户
提问于 2015-01-27 02:33:39
回答 3查看 1.3K关注 0票数 0

我正在使用imagick为pdf文档创建缩略图。我在这行得到一个致命的错误..

代码语言:javascript
运行
复制
$imagick->readImage($file .'[0]');

我尝试在try catch中进行包装,但我了解到这不起作用,因为这是一个致命的错误,而不是一个异常。我如何优雅地捕捉到这个错误?

我更关心使用PHP来检测错误,而不是解决imagick问题,因为用户pdf文件可能会出现任何数量的错误。谢谢!

EN

回答 3

Stack Overflow用户

发布于 2015-01-27 15:15:03

不幸的是,在php中捕获致命错误是不可能的。这是给出的。你仍然可以做几件事:

仍会执行使用register_shutdown_function()注册的

  1. 函数。你可以把你的错误处理放到这样的函数中,如果readImage()成功了,注册空函数。
  2. 你可以把缩略图生成放到php命令行脚本中,并使用exec('php thngenerate.php ' . escapeshellarg($file .'[0]'), $out, $return_var);执行它。如果为$return_var != 0,则出现错误。
  3. 类似于#2,但脚本是使用http调用的,这一次您需要注意内部服务器错误。
票数 1
EN

Stack Overflow用户

发布于 2015-01-27 03:55:48

它应该出现在服务器错误日志中,这可以让您深入了解它失败的原因,并希望从一开始就防止它发生。除此之外,这取决于你想要做什么。我使用我的来调整图像大小和创建缩略图,所以我的检查与此相关;imagick是否显示了正确的尺寸,是否存在缩略图,并且文件大小大于0。

票数 0
EN

Stack Overflow用户

发布于 2015-01-27 02:40:07

您可以使用set_error_handler设置自定义错误处理程序

代码语言:javascript
运行
复制
function exceptionErrorHandler($errno, $errstr, $errfile, $errline ) {    
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}

set_error_handler("exceptionErrorHandler");
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28156447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档