Impossible de charger la bibliothèque imagick

J’ai installé l’imagick d’ ici (ImageMagick-7.0.3-1-Q16-x64-dll) et le dll (TS 32 bit) d’ ici . Et aussi append le CORE_RL_* à C:\xampp\apache\bin MAIS j’obtiens toujours l’erreur suivante lorsque je lance le serveur laravel.

ERREUR: Avertissement: Démarrage de PHP: Impossible de charger la bibliothèque dynamic ‘C: \ xampp \ php \ ext \ php_imagick.dll’ – Le module spécifié est introuvable. dans Unknown sur la ligne 0

En outre, j’ai placé le fichier dll dans C:\xampp\php\ext\php_imagick.dll .

En outre, l’imagick est affiché dans le phpinfo() . entrer la description de l'image ici

Et quand je l’utilise avec laravel, j’obtiens l’erreur suivante. entrer la description de l'image ici

Obtenir Imagick pour travailler sur Windows a toujours été un peu raté, comme indiqué ici, un bon guide http://stackoverflow.com/a/36378764/1090867

Mais il manque un point important

Vous n’avez pas besoin de mettre le binary dans le dossier PHP!

Alors, voici les étapes que je suis moi-même chaque fois que je dois le faire. Cela devrait fonctionner pour apache, nginx ou IIS.

Étape 1

Découvrez votre version et configuration php

entrer la description de l'image ici

Vous avez besoin de la version, de l’architecture, du compilateur et de la sécurité des threads

si la sécurité des threads est désactivée c’est NTS qui est activé

Étape 2

Obtenir une installation d’une copie de imageMagick il suffit de s’assurer qu’il correspond à votre architecture, cela doit également être dll.exe plutôt que la version statique.

En ce qui concerne Q8 et Q16, je vous laisse à vous mais les deux versions fonctionneront

http://www.imagemagick.org/script/binary-releases.php#windows

Je recommande de changer le nom du répertoire d’installation en quelque chose de générique comme C:\Imagemagick car j’ai déjà eu des problèmes avec le nom de répertoire par défaut avec PHP et Windows.

Installez-vous simplement, mais cochez la case Ajouter un chemin d’application et normalement, je coche les anciens outils.

entrer la description de l'image ici

Une fois son installation effectuée, accédez à vos variables d’environnement et assurez-vous qu’elles sont bien dans le chemin. Il n’y a pas besoin de copier quoi que ce soit dans votre dossier php

Juste pour vous assurer que tout fonctionne, ouvrez la ligne de commande et tapez convert –version, vous devriez obtenir une réponse

Étape 3

C’est malheureusement la partie difficile et peut être un peu d’essais et d’erreurs. J’ai trouvé ce qui suit fournit le meilleur php_imagick.dll qui semble fonctionner 9 fois sur 10

http://www.peewit.fr/imagick/

Choisissez simplement la version qui correspond à votre installation.

Si cela ne fonctionne pas, allez sur php.net et essayez chaque version jusqu’à ce que l’une fonctionne … (commencez au plus tard)

http://windows.php.net/downloads/pecl/releases/imagick/

Une fois que vous avez un php_imagick.dll, placez-le dans votre dossier php/ext/

localisez votre fichier php.ini allez au bas (ou où que soient vos extensions) et ajoutez l’ extension=php_imagick.dll

Étape 4

Redémarrez PHP (ou votre ordinateur) et cela devrait fonctionner si ce n’est pas essayer un autre php_imagick.dll et répéter.

Si ce qui précède ne fonctionne pas

Ensuite, essayez une version légèrement plus ancienne d’Imagick. J’utilise normalement la version 6.8.6-8 Q16.

S’il vous plaît noter que je ne l’ai vraiment fait que sur Windows 7 et Windows Server 2008, 2008 R2, 2012 et 2012 R2 tous x64 avec x86 php

Si cela ne fonctionne toujours pas, vous devrez probablement copier les fichiers CORE_RL dans votre répertoire imagick, cela cause normalement plus de problèmes, mais si vous êtes à court d’idées, essayez-le.

Je viens de rencontrer ce problème. Seulement j’utilise PHP sur la ligne de commande (PHP CLI). Le problème réside dans les dépendances du fichier php_imagick.dll principal. PHP tentera de charger l’extension, mais comme Windows ne peut pas trouver les DLL CORE_RL_ , l’extension ne pourra pas se charger et le message d’erreur / avertissement concernant l’impossibilité de charger la DLL apparaîtra. Il est utile de savoir comment Windows charge les DLL:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx

C’est assez compliqué, mais vous pouvez voir que la raison pour laquelle Apache /bin fonctionne avec Apache est que httpd.exe se trouve dans ce répertoire. Toutefois, lorsque vous utilisez PHP CLI, les DLL doivent être situées dans le même répertoire que php.exe .

Si vous ne souhaitez pas que des DLL en double flottent, ajoutez le répertoire contenant php.exe au système PATH et placez toutes les DLL CORE_RL_ cet CORE_RL_ . Le PATH est la dernière chose recherchée, mais cela fonctionnera très bien. Si vous ne voulez pas d’entrées parasites dans votre système PATH, définissez les informations PATH supplémentaires uniquement au démarrage d’Apache.