преобразование из ImageMagick работает в командной строке, но не с локального хоста

#imagemagick

#imagemagick

Вопрос:

Я могу без проблем использовать функцию преобразования ImageMagick в командной строке:

 /usr/local/magick/bin/convert a.pdf b.png
  

Затем я поместил его в однострочный PHP-файл с именем testconvert.php:

 system("/usr/local/magick/bin/convert a.pdf b.png", $code);
  

и он отлично работает как вызов командной строки из PHP:

 php testconvert.php
  

Но, когда я запускаю скрипт из своего браузера на локальном хосте:

 http://localhost/~me/testconvert.php
  

Я получаю сообщение об ошибке:

преобразование: изображения не определены `b.png’ @ error/convert.c/ConvertImageCommand /3253

Я нашел много людей, которые сталкивались с подобными проблемами, и исправления варьировались от использования абсолютного пути к файлам (не помогло) до установки ghostscript (тоже не помогло). Я немного помешан на этом. У кого-нибудь есть какие-либо мысли о том, что я могу попробовать?

Спасибо!

Комментарии:

1. Спасибо за ответ, но он не решил проблему. Я объяснил в комментарии к ответу.

Ответ №1:

Измените свою system() строку на:

 system("pwd");
  

и вы увидите, в каком каталоге запущен ваш скрипт.

Комментарии:

1. Результат — это то, что я ожидаю, то есть каталог, в котором есть скрипт, но я не уверен, как это мне поможет. Когда я выполняю прямое выполнение скрипта из командной строки (как описано в публикации), он также запускает его в каталоге. Для каталога установлено разрешение 777, поэтому это не должно быть ошибкой записи при вызове сервера.

2. @hitlad Хорошо, попробуйте преобразовать файл PNG в другой файл PNG, и тогда вы не будете зависеть от ghostscript , и вы увидите, работает ли это. Кроме того, попробуйте добавить -verbose after convert , и вы увидите, что он пытается сделать.

3. Это преобразование было выполнено без проблем. Когда я пытался следовать предложению ghostscript из другого потока, я установил ghostscript и нашел его (версия 9.10) как часть существующего пути поиска. Может быть, путь работает для моей оболочки, но отсутствует в пути поиска PHP?

4. Ах, спасибо за это! Теперь … как изменить поиск в PHP path…It похоже на set_include_path(get_include_path() . PATH_SEPARATOR . $gspath); опять же, работает в командной оболочке, но не как скрипт через браузер. Или, скорее, новый путь включения действительно включает путь к gs, но, который я делаю в системе («какой gs»), он все равно оказывается нулевым.