macos — Ghostscript поверх PHP на Mac Yosemite не работает. На Shell это работает

Я в отчаянии …

Я установил Ghostscript на Mac OS X Yosemite через Homebrew. Ghostscript хорошо работает над оболочкой, но не работает, если он выполняется через PHP.

$gs = '/usr/local/opt/ghostscript/bin/gs';

// Count PDF
$shell = $gs . ' -q    -dNODISPLAY    -c "(' . $pdf . ') (r) file runpdfbegin pdfpagecount = quit" 2>&1';
$result =  shell_exec($shell);

// Execution
$shell = $gs . ' -dNumRenderingThreads=4 -dNOPAUSE -sDEVICE=jpeg -dFirstPage=1 -dLastPage=1 -sOutputFile="' . $filePathThumb . '" -dJPEGQ=100 -r300 -q "' . $pdf . '" -c quit 2>&1';
$result =  shell_exec($shell);

Вывод $ result:

dyld: Library not loaded: /usr/local/lib/libtiff.5.dylib
Referenced from: /usr/local/opt/ghostscript/bin/gs
Reason: Incompatible library version: gs requires version 8.0.0 or later, but libtiff.5.dylib      provides version 7.0.0

Если я выполняю ту же команду на оболочке, она работает …

Я так много устал в последние дни, но все еще борюсь.

Я переустановил gs и imagemagick, удалил символические ссылки, запустил brew doctor, попробовал другие файлы libtiff.5.dyslib.

Моя среда:

  • Yosemite
  • Версия PHP 5.5.13
  • Версия Zend Server: 7.0.0
  • Imagemagick Версия 6.8.9-8 (устанавливается через brew)
  • Ghostscript версии 9.15 (устанавливается через brew)

0

Решение

Очевидно, что вы используете версию Ghostscript с общими библиотеками (именно поэтому она требует libtiff.dylib). Мы не рекомендуем этого, и вы можете избежать этого, загрузив исходники Ghostscript и создав их самостоятельно. Это проект, требующий некоторой сборки, так как вам понадобятся такие вещи, как gcc. Однако мне это удалось, и я далеко не эксперт по Mac.

Тем не менее, это, вероятно, просто подтолкнет вас к реальной проблеме, заключающейся в том, что ваша PHP-среда не соответствует вашей оболочке. В этом случае переменная среды PATH, вероятно, отличается, что означает, что оболочка может найти динамическую библиотеку, а PHP — нет.

Поскольку Ghostscript может использовать определенные переменные среды, вам необходимо убедиться, что среда, в которой выполняется сценарий PHP, такая же, как среда, используемая оболочкой.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]