Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何捕获PHP中的imagick致命错误_Php_Imagick - Fatal编程技术网

如何捕获PHP中的imagick致命错误

如何捕获PHP中的imagick致命错误,php,imagick,Php,Imagick,我正在使用imagick为pdf文档创建缩略图。我在这条线上遇到一个致命的错误 $imagick->readImage($file .'[0]'); 我试着用try-catch包装,但据我所知,这不起作用,因为这是一个致命的错误,而不是一个例外。我怎样才能优雅地抓住这个错误呢 我更关心的是使用PHP检测错误,而不是解决imagick问题,因为用户pdf文件可能会出现任何数量的错误。谢谢 您可以使用以下设置自定义错误处理程序: 它应该显示在服务器错误日志中,这可以让您深入了解它失败的原因,

我正在使用imagick为pdf文档创建缩略图。我在这条线上遇到一个致命的错误

$imagick->readImage($file .'[0]');
我试着用try-catch包装,但据我所知,这不起作用,因为这是一个致命的错误,而不是一个例外。我怎样才能优雅地抓住这个错误呢


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

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


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

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

  • 使用
    register\u shutdown\u Function()注册的函数仍在执行。您可以将错误标记放入此类函数中,如果
    readImage()
    成功,请注册空函数

  • 您可以将缩略图生成放到php命令行脚本中,并使用
    exec('php thngenerate.php'.escapeshellarg($file.[0]”)、$out、$return\u var)执行它。如果
    $return\u var!=0,出现错误

  • 类似于#2,但脚本是使用http调用的,这次您要注意内部服务器错误


  • 错误是什么?@PeeHaa OP明确表示这无关紧要。@Marek你在读什么帖子?@PeeHaa“更关心使用PHP检测错误,而不是解决imagick问题”阅读问题。不仅仅是随机问题。你不能盲目地去处理未知的错误。没有关键信息,任何人也无法合理地给出答案
    function exceptionErrorHandler($errno, $errstr, $errfile, $errline ) {    
        throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
    }
    
    set_error_handler("exceptionErrorHandler");