Я использую imagick для создания эскизов для PDF-документов. Я получаю фатальную ошибку на этой строке.
$imagick->readImage($file .'[0]'); Я попробовал обернуть в try catch, но, как я понял, это не работает, потому что это фатальная ошибка, а не исключение. Как бы я изящно поймал эту ошибку?
Меня больше беспокоит использование PHP для обнаружения ошибки, чем решение проблемы с изображением, так как любое количество ошибок может возникнуть с помощью файлов pdf пользователя. благодаря!
К сожалению, невозможно получить фатальные ошибки в php. Это дано. Есть еще пара вещей, которые вы можете сделать:
  Функция, зарегистрированная с помощью register_shutdown_function() , все еще выполняется.  Вы можете поместить свою ошибку в такую функцию, и если readImage() успешным, зарегистрируйте пустую функцию. 
  Вы можете поместить эскиз в сценарий командной строки php и выполнить его с помощью exec('php thngenerate.php ' . escapeshellarg($file .'[0]'), $out, $return_var);  ,  Если $return_var != 0 , произошла ошибка. 
Подобно # 2, но скрипт вызывается с использованием http, на этот раз вы смотрите на ошибку внутреннего сервера.
Он должен отображаться в журналах ошибок сервера, которые могут дать вам представление о том, почему он не работает, и, надеюсь, предотвратить его в первую очередь. Помимо этого, это зависит от того, что вы пытаетесь сделать. Я использую мой для изменения размеров изображений и создания эскизов, поэтому мои проверки связаны с этим; Im imagick показывает правильные размеры и представляет собой миниатюру и имеет размер файла больше 0.
Вы можете установить собственный обработчик ошибок с помощью set_error_handler :
 function exceptionErrorHandler($errno, $errstr, $errfile, $errline ) { throw new ErrorException($errstr, 0, $errno, $errfile, $errline); } set_error_handler("exceptionErrorHandler");