Я использую 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");