2015-01-26 51 views
0

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

$imagick->readImage($file .'[0]'); 

我试过包装在一个尝试捕捉,但我了解到,不起作用,因为它是一个致命的错误,也不例外。我将如何优雅地捕捉到这个错误?

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

+2

* *错误是什么? – PeeHaa 2015-01-26 18:38:11

+0

@PeeHaa OP明确表示没关系。 – Marek 2015-01-26 18:40:25

+0

@Marek你在阅读什么文章? – PeeHaa 2015-01-26 18:42:58

回答

-1

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

function exceptionErrorHandler($errno, $errstr, $errfile, $errline) {  
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline); 
} 

set_error_handler("exceptionErrorHandler"); 
0

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

1

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

  1. 功能注册使用register_shutdown_function()仍然执行。你可以把你的错误放到这个函数中,如果readImage()成功,注册空函数。

  2. 您可以将缩略图生成到php命令行脚本中,并使用exec('php thngenerate.php ' . escapeshellarg($file .'[0]'), $out, $return_var);执行它。如果$return_var != 0发生错误。

  3. 与#2类似,但使用http调用脚本,这次您观察内部服务器错误。