Я в отчаянии …
Я установил 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.
Моя среда:
Очевидно, что вы используете версию Ghostscript с общими библиотеками (именно поэтому она требует libtiff.dylib). Мы не рекомендуем этого, и вы можете избежать этого, загрузив исходники Ghostscript и создав их самостоятельно. Это проект, требующий некоторой сборки, так как вам понадобятся такие вещи, как gcc. Однако мне это удалось, и я далеко не эксперт по Mac.
Тем не менее, это, вероятно, просто подтолкнет вас к реальной проблеме, заключающейся в том, что ваша PHP-среда не соответствует вашей оболочке. В этом случае переменная среды PATH, вероятно, отличается, что означает, что оболочка может найти динамическую библиотеку, а PHP — нет.
Поскольку Ghostscript может использовать определенные переменные среды, вам необходимо убедиться, что среда, в которой выполняется сценарий PHP, такая же, как среда, используемая оболочкой.
Других решений пока нет …