PHP Ошибка сегментации Imagick - PullRequest
0 голосов
/ 21 января 2020

У меня дешевый сервер за 5 долларов в месяц, 1G RAM обрабатывает некоторые изображения для моего сайта. Очень редко я сталкиваюсь с ошибкой сегментации при PHP Imagick при записи образа GIF на диск.

Я установил ограничение памяти для команды консоли, надеясь, что PHP сначала уловит проблему и выдаст исключение что я могу правильно обработать, но это не сработало.

Особая проблема заключается в том, что определенные изображения GIF приводят к тому, что он обрабатывает sh в этой строке кода:

     echo 'Writing images to disk.' . PHP_EOL;
     $file = $img->writeImages($imageOnDIsk, true);//crashes here
     echo 'Finished writing images to disk.' . PHP_EOL;

Спецификация c GIF - это GIF для взрослых, поэтому я не уверен, что смогу поделиться им.

Вот мои журналы сервера:

Setting memory limit. Pulling URL: https://i.redd.it/gyvc8t9xdvb41.gif Coalescing Images Done Coalescing Images Processing regular image. Not comic. Deleting temp image on disk. Writing images to disk. Segmentation fault (core dumped)

Кажется, что это изображения ширина * высота * битовая глубина * кадры занимают более 1 ГБ памяти. Нужно обнаружить это перед рукой.

1 Ответ

1 голос
/ 21 января 2020

A Segmentation fault - общая ошибка уровня операционной системы c. Как конечный пользователь PHP вы не можете его контролировать и не можете это исправить. Это то, что нужно исправить на уровне php -sr c (в данном случае, в частности, это код расширения imagick).

Просто поместите это потенциально в саму ошибку PHP нет в вашем коде.


Что вы можете сделать, это отправить сообщение об ошибке с PHP. И предоставьте backtrace вместе с отчетом об ошибке, чтобы один из разработчиков расширений попытался это исправить.

...