Imagick é uma extensão PHP para criar e modificar imagens usando a biblioteca ImageMagick. Há também uma versão do Imagick disponível para o HHVM. Embora as duas extensões sejam compatíveis principalmente em sua API, e ambas chamam a biblioteca ImageMagick, as duas extensões são bases de código completamente separadas.
Os bugs também podem ser relatados em https://bugs.php.net, mas podem ter um tempo de resposta mais lento.
A melhor maneira de instalar o Imagick é através de um gerenciador de pacotes, por exemplo, Apt, Yum, Brew, pois eles também instalarão o ImageMagick para você.
Se você precisar compilar o Imagick da fonte, primeiro você deve instalar o ImageMagick, pelo menos a versão 6.2.4, mas é altamente recomendável usar uma versão mais recente devido às muitas correções de bugs.
Depois que o ImageMagick for instalado, os seguintes comandos compilarão e instalarão o Imagick:
git clone https://github.com/Imagick/imagick
cd imagick
phpize && ./configure
make
make install
Você também precisará adicionar extension=imagick.so ao seu arquivo php ini para fazer com que o php carregue a extensão.
Para Windows, instale o Imagick e a Biblioteca Imagemagick subjacente de:
Uma vez compilado, o Imagick deve ser executado com a mesma versão do ImageMagick que foi compilada. Sabe -se que a execução contra uma versão diferente do ImageMagick causa problemas de estabilidade e, portanto, não é recomendado ou suportado.
Se estiver usando o Imagick no nixos, você provavelmente deseja definir o FontConfig_file para evitar uma mensagem de aviso ao carregar fontes e magick_configure_path para ter todas as informações disponíveis no Imagick :: getConfiguroptions ().
Quase todas as funções da biblioteca têm um exemplo em www.phpimagick.com, onde você pode ver o código de exemplo para chamar a função, bem como a imagem ou saída gerada.
O ImageMagick, a biblioteca que a extensão Imagick expõe ao PHP teve muitas correções de bugs, que corrigiram muitos problemas de corrupção de imagem. Recomendamos fortemente a atualização da versão mais recente (maior que 6.9.1 ou 7.x), se possível.
A extensão PHP Imagick funciona chamando a biblioteca ImageMagick. Embora os desenvolvedores da ImageMagick tome um bom cuidado ao evitar bugs, é inevitável que alguns bugs estejam presentes no código. O ImageMagick também usa muitas bibliotecas de terceiros para abrir, ler e manipular arquivos. Os escritores dessas bibliotecas também tomam cuidado ao escrever seu código. No entanto, todo mundo comete erros e inevitavelmente haverá alguns bugs presentes.
Como o ImageMagick é usado para processar imagens, é possível que os hackers criem imagens que contêm dados inválidos para tentar explorar esses bugs. Por isso, recomendamos o seguinte:
Fazer isso tornará mais difícil para os hackers explorar um bug, se alguém existir nas bibliotecas que o ImageMagick está usando.
Execute -o como um processo muito baixo privilegiado. Tanto quanto possível, os arquivos e os recursos do sistema acessíveis ao script PHP de que o Imagick está sendo chamado deve ser bloqueado.
Verifique se todos os arquivos de imagem começam com os "bytes mágicos" esperados correspondentes aos tipos de arquivos de imagem que você suporta antes de enviá -los para o ImageMagick para processamento. Isso pode ser feito com finfo_file () - veja abaixo.
Verifique o resultado do processamento da imagem é um arquivo de imagem válido antes de exibi -lo para o usuário. No caso extremamente improvável de que um hacker possa colocar arquivos arbitrários para a saída do Imagick, verificando se é um arquivo de imagem, e não o código -fonte do seu aplicativo que está sendo enviado, é uma precaução sensata. Isso pode ser realizado pelo seguinte código:
<?php
$ finfo = finfo_open ( FILEINFO_MIME_TYPE );
$ mimeType = finfo_file ( $ finfo , $ filename );
$ allowedMimeTypes = [
' image/gif ' ,
' image/jpeg ' ,
' image/jpg ' ,
' image/png '
];
if ( in_array ( $ mimeType , $ allowedMimeTypes ) == false ) {
throw new SecurityException ( " Was going to send file ' $ filename ' to the user, but it is not an image file. " );
}Essas recomendações não garantem nenhuma segurança, mas devem limitar sua exposição a qualquer problema de segurança relacionado ao Imagick/ImageMagick.
O ImageMagick tem a capacidade de usar a API de multipocessamento aberto para poder usar vários threads para processar uma imagem de uma só vez. Sabe -se que algumas implementações do OpenMP têm problemas de estabilidade quando são usados em determinados ambientes.
Recomendamos fazer um dos seguintes:
Desativando o suporte do OpenMP no ImageMagick, compilando-o com o sinalizador de compilação "--Disable-Openmp".
Desative o uso de threads em imagemagick via Imagick chamando: Imagick::setResourceLimit(Imagick::RESOURCETYPE_THREAD, 1); ou Imagick::setResourceLimit(6, 1); Se a sua versão do Imagick não contiver a constante do ResourceType_Thread.
Desative o uso de threads no ImageMagick, definindo o limite de recursos do thread no arquivo Policy.xml do ImageMagick 'com <policy domain="resource" name="thread" value="1"/> Este arquivo está possivelmente localizado em /etc/imagemagick-6/policy.xml ou local semelhante.
Se você deseja usar o OpenMP no ImageMagick quando for chamado através do Imagick, você deve testar completamente que ele se comporta corretamente no seu servidor.
A documentação precisa de muito trabalho. Há um editor on -line aqui: https://edit.php.net/ As contribuições são mais do que bem -vindas.
Consulte http://abi-laboratory.pro/tracker/timeline/imagemagick/ para alterações exatas da versão da biblioteca ImageMagick subjacente.