Esse foi mais um dia daqueles “Na minha máquina funciona”, onde o upload de arquivos funcionava perfeitamente no ambiente de DEV e no ambiente de produção antigo, mas quebrava na nova instância que estavamos homologando na AWS.
Já imaginava que tinha o ImageMagick instalado em produção, mas como o upload de imagens não acontecia:
convert -background none some\_image.svg some\_image.jpg
convert: not authorized `some\_image.svg’ @ error/constitute.c/ReadImage/454.
convert: no images defined `some\_image.jpg’ @ error/convert.c/ConvertImageCommand/3046.
whathell
Desconfiei que talvez a versão estivesse desatualizada…
$ convert -version
Version: ImageMagick 6.7.8–9 2016–06–22 Q16 http://www.imagemagick.org
Copyright: Copyright © 1999–2012 ImageMagick Studio LLC
Features: OpenMP
Okay, tinha a versão atualizada!
😏 até janeiro de 2018 ao menos
Aí começou aquele trabalho de formiguinha, para entender um pouco melhor como funciona o ImageMagick.
O ImageMagick tem entre outros helpers, o comando convert -list delegate, que exibe o comando que é executado para cada tipo de manipulação de imagem. A conversão de SVG usa por baixo dos panos o comando rsvg-convert-o "%o" "%i".
Como esse comando não era reconhecido no SO do server, foi fácil de ver que era necessário instalar essa lib e suas dependências.
Se tornou mais fácil, pq contamos com a ajuda do @tavinus que publicou esse gist install-gm-w-librvg.sh. 😃
Legal né? Mas após tudo isso, ainda não conseguia fazer a conversão de arquivos svg para png…
Pesquisando um pouco mais, vi que alguns tipos de arquivos .svg, .txt, etc e algumas fontes ( como imagens vindas da web ) tem upload blockeada por padrão na configuração de policies do ImageMagick, que geralmente fica em /etc/ImageMagick/policy.xml e podem ser vistas nos rightsdo comando convert -list policy
A solução então era alterar esses direitos para esse tipo de arquivo na linha:
\<policy domain=”coder” rights=”none” pattern=”MVG” /\>
E finalmente, após instalar a lib necessária para conversão de SVG e ajustar a regra para esse tipo de arquivo, meu upload finalmente funcionou!
Top comments (0)