2015-07-21 6 views
0

Je suis sur Win Server 2012 IIS 8, PHP 5.6, Imagick Module 3.1.2, ImageMagick 6.8.7-2 2013-10-18 Q16.Erreurs ImageMagick: Lecture PDF

J'ai lu tous les délégué Postscript erreurs a échoué et ont fait ce qui suit: - Installé Ghostscript - nous avons vérifié que GS et Imagick est dans le PATH var - nous avons vérifié que je peux utiliser la conversion dans l'invite de commande (Est travail) - PHP exec ("whoami") renvoie nt autorité \ iusr que j'ai ajouté pour le contrôle total - J'ai essayé d'utiliser des chemins complets backslashes() double-backslashes (\) foward-slashes (/) - Je ne sais pas pense qu'il a quelque chose à voir avec le chemin parce que si j'essaie le même code sur un jpg sans chemin, ça marche. Le script et les fichiers sont dans le même chemin.

Voici mon code PHP:

<?php 
ini_set('display_errors',1); 
ini_set('display_startup_errors',1); 
error_reporting(E_ALL); 
echo exec("whoami"); echo "<br/>"; 
echo exec("convert.exe dr.pdf dr.jpg 2>&1"); // Does not work and gives below error 
echo "<br/>"; 

$im = new imagick();   
$im->readimage("dr.pdf"); 
$pages = $im->getNumberImages(); 

echo $pages; 

?> 

Sortie:

nt authority\iusr convert.exe: no images defined `dr.jpg' @ error/convert.c/ConvertImageCommand/3145.

Fatal error: Uncaught exception 'ImagickException' with message 'Postscript delegate failed `dr.pdf': No such file or directory @ error/pdf.c/ReadPDFImage/682' in D:\WWW\DEMO\data\temp\test.php:13 Stack trace: #0 D:\WWW\DEMO\data\temp\test.php(13): Imagick->readimage('dr.pdf') #1 {main} thrown in D:\WWW\DEMO\data\temp\test.php on line 13

Toute aide serait grandement appréciée. Cordialement Johan

Répondre

1

Pour toute personne qui pourrait courir dans le même problème: Modifier les autorisations de C: \ Windows \ Temp pour inclure le contrôle total pour IIS_IUSRS et les utilisateurs

Après avoir fait cela tout semble fonctionner! Remarque: J'ai dû effectuer une mise à niveau vers le dernier module PECL Imagick pour voir l'erreur complète renvoyée par GhostScript, qui montrait que GhostScript essayait d'effectuer la conversion dans le dossier Temp de Windows. Il était étrange que mon script PHP a travaillé à partir d'une ligne de commande, mais pas à partir du site Web. Mais évidemment, c'était un problème d'autorisation.

je poste les étapes d'installation suivantes pour celui qui se jette dans le même problème (ou si je besoin d'un guide à l'avenir et j'ai oublié :)) Sous Windows 2012 Server avec IIS 8

  1. Installer Win Platform Installer (https: //www.microsoft.com/web/downloads/platform.aspx)
  2. Aller à Gestionnaire des services Internet et Web Platform Installer ouvert et installer PHP 5.6
  3. Télécharger ImageMagick x86 DLL à partir d'ici: installer http://www.imagemagick.org/download/binaries/ImageMagick-6.9.1-9-Q16-x86-dll.exe
  4. I nstall ImageMagick et assurez-vous que $ _SERVER ["Path"] a le chemin ImageMagick configuré.
  5. Téléchargez la dernière PECL ImageMagick Module PHP x86 NonThreadSafe ici: http://windows.php.net/downloads/pecl/releases/imagick/3.3.0RC2/php_imagick-3.3.0rc2-5.6-nts-vc11-x86.zip
  6. Copiez tous les fichiers DLL PECL ImageMagick en PHP \ ext
  7. Ajouter l'extension = php_imagick.dll dans votre fichier php.ini
  8. Téléchargez et installez GhostScript x64 ici: http: //downloads.ghostscript.com/public/gs916w64.exe (Non x86 comme ImageMagick délègue au GhostScript 64 bits)
  9. Assurez-vous que le chemin GhostScript est dans la variable $ _SERVER ["Path"] (C: \ Program Files \ gs \ gs9.16 \ bin)
  10. IMPORTANT DERNIÈRE ÉTAPE: Ajouter des droits d'utilisateur à C: \ Windows \ Temp pour IIS_USRS et les utilisateurs
  11. Restart Server (habituellement requis pour PHP pour voir les chemins)

Ce qui m'a toujours aidé teste mon script le plus basique via une invite de commande> php.exe test.php Cela vous montrera presque toujours des erreurs si vous avez fait quelque chose de mal avec l'installation ou si vous avez besoin d'un VC Redist. Où une requête de site Web ne vous montre pas toujours les erreurs de démarrage.