Проблема с Imagick, а также с phmagick: делегат Postscript не удалось / Нет такого файла или каталога

Я использую imagick 3.0.1, а также phmagick (http://www.francodacosta.com/phMagick/download). Независимо от того, обе дают мне такую ​​же ошибку, когда я пытаюсь преобразовать PDF в JPEG.

Например: делегат Postscript не удался `/ tmp / magick-bfxIrUJ5 ': нет такого файла или каталога @ error / pdf.c / ReadPDFImage / 669

Я использую Ghostcript-9.05 (работает в / usr / local / bin / gs). Также ImageMagick-6.7.6-8 (работает в / usr / local / bin / convert).

Я уже проверил разрешение на папку (755). ImageMagick отлично работает с Терминалом.

Например, мой PHP с помощью Imagick:

//use imagick $im = new imagick( '/pdf/553571072.pdf' ); // convert to jpg $im->setImageColorspace(255); $im->setCompression(Imagick::COMPRESSION_JPEG); $im->setImageFormat('jpeg'); //write image on server $im->writeImage('/jpg/553571072.jpg'); 

Кстати, Imagick появляется в моей phpinfo (). Я работаю над linux / apache / amd64.

Любые советы будут высоко оценены!

Хорошо, это, наконец, работает, благодаря помощи Нуну Франко да Коста ( http://www.francodacosta.com/ ).

Проблема заключалась в том, что мой путь GhostScript был ОК для Shell, но это было неправильно для системы и PHP. Чтобы исправить это, вы должны связать файл /usr/local/bin/gs с /usr/bin/gs .

Выполните следующие действия из командной оболочки:

 [root@din ~]# convert -list configure | grep -i delegates DELEGATES bzlib fontconfig freetype jpeg jng png tiff x11 xml zlib 

Проверьте, существует ли файл gs в /usr/bin . Если это произойдет, мы создадим резервную копию.
Если нет /usr/bin/gs вы можете пропустить этот шаг

 [root@din ~]# ls -l /usr/bin/gs -rwxr-xr-x 1 root root 6024 Sep 30 2010 /usr/bin/gs [root@din ~]# mv /usr/bin/gs /usr/bin/gs.orig 

Теперь создайте ссылку из /usr/local/bin/gs в /usr/bin/gs

 [root@din ~]# sudo ln -s /usr/local/bin/gs /usr/bin 

Это должно решить проблему. Большое спасибо, ребята.

Мой вклад в «чистое PHP-решение», предложенное @HelloWorld (спасибо!) В комментариях к принятому ответу, небольшая поправка: нужно добавить имя переменной перед расширением PATH по умолчанию, поэтому
putenv( getenv('PATH') . ':/usr/local/bin' ); не будет работать, но
putenv( 'PATH=' . getenv('PATH') . ':/usr/local/bin' ); будем

* У меня менее 50 баллов репутации, я не мог добавить свой комментарий в нужное место, поэтому мне пришлось создать новый ответ 🙂

Я получал эти проблемы, используя ImageMagick ImageMagick 6.7.7-10 с GhostScript 9.10 .

Оказывается, файлы PDF были повреждены, и хотя некоторые новые версии GS могли их читать, эта старая версия не могла, учитывая следующую ошибку.

  **** Warning: An error occurred while reading an XREF table. **** The file has been damaged. This may have been caused **** by a problem while converting or transfering the file. **** Ghostscript will attempt to recover the data. 

В Linux вы можете передать PDF через pdftk :

 pdftk 'bad.pdf' output 'fixed.pdf' 

После этого все работало для меня на Ubuntu.