Странная проблема - PHP / ImageMagick / Ghostscript - PullRequest
2 голосов
/ 15 июля 2009

Этот вопрос был близок, но не сработал. Я пытаюсь преобразовать PDF в JPG (для миниатюры). Вот команда, которую я выполняю:

convert -quality 100 -density 200x200 /path/file.pdf /path/file.jpg

У меня mamp pro 1.7.2, imagemagick, ghostscript все правильно установлено и работает. Эта команда отлично работает из оболочки, но не работает при запуске из скрипта php. Еще один поворот, для преобразования изображения в изображение, все отлично работает как из оболочки, так и из скрипта. Это привело бы меня к мысли, что существует некоторая проблема с путями, относящимися к ghostscript (gs) из среды apache / php, хотя двоичный файл gs находится в том же каталоге, что и двоичный файл для преобразования. Кроме того, я настроил Apache Enmars для ( отличный учебник brybot.ca - www.brybot.ca/archives/getting-imagemagick-and-more-to-work-with-mamp-on-os-x / ), поэтому ImageMagick работает отлично, И "/ opt / local / bin" находится в моей переменной пути apache.

Через оболочку преобразование из pdf в изображение занимает несколько минут, и у меня возникает мучительная мысль, что скрипт php завершается / завершается до завершения преобразования imagemagick / ghostscript и, возможно, прерывает процесс преобразования imagemagick ... Я пробовал exec, system, shell_exec все безрезультатно.

Я не получаю вывод команды, кажется, ничего не происходит и ничего не отображается в логах apache или php.

ОБНОВЛЕНИЕ : Теперь я получаю следующую ошибку в журнале apache после перезапуска MAMP

convert: unable to create temporary file `/path/file.pdf': Permission denied @ pdf.c/ReadPDFImage/358. convert: missing an image filename `/path/file.jpg' @ convert.c/ConvertImageCommand/2766.

У кого-нибудь есть идеи? Я тяну свои волосы на этом ...

Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 15 июля 2009

Apache обычно имеет ограниченные разрешения на вашем сервере (и именно так вы и хотите), попробуйте поместить файлы в / tmp, где вы знаете, что apache имеет разрешения на запись. У Apache также могут быть проблемы с чтением файлов, созданных другими пользователями, если они не являются общедоступными.

0 голосов
/ 18 ноября 2010

Я прочитал какую-то статью о том, что не лучше использовать команду оболочки, используя exec, лучший способ использовать встроенный Imagick в php. больше вы читаете на Ссылка

Спасибо иметь день мечты

...