2014-02-08 1 views
0

Я пытаюсь скомпоновать расширение для изображения Heroku, но мне нужно его посмотреть в папке /app/bin для ImageMagick, а не в папке /usr/bin/. Я использовал столько же google-fu, сколько и у меня, но я не могу понять, как построить расширение imagick.so и указать его на другую папку.Point imagick в другом месте, кроме/usr/bin

От PHP, если я shell_exec("which convert") он повторяет версию /app/bin, но когда я Imagick::getVersion() это указывает на версию /usr/bin/. Это заставляет меня думать, что это проблема в расширении.

У меня никогда не было make моего собственного расширения от источника, так что это определенно может быть частью причины. Все, что вы могли бы сделать, чтобы указать мне в правильном направлении, было бы полезно.

+0

На самом деле я должен был спросить ранее «но мне нужно, чтобы он смотрел в папку/app/bin для ImageMagick, а не в папку/usr/bin /». Что заставляет вас думать, что вам нужно это сделать? то есть какая ошибка видна? – Danack

+0

Это ошибка, связанная со старой версией Imagick (это то, что есть на Heroku), что иногда создает прозрачные фоны как черные. (См. [Тема здесь] (http: // stackoverflow.com/questions/11178251/converting-pdf-to-png-with-transparent-background)) –

+0

Итак, вы компилируете Imagick, но это подбирает неправильную версию Image Magick? А также - «просто вызовите make без параметров, scp его на мою машину», вы компилируете imagick локально, а затем копируете его на сервер? – Danack

ответ

0

Попробуйте с php.ini файл в корневой директории, со следующим содержанием:

extension_dir="/app/bin" 
extension=imagick.so 
+0

Спасибо, что ответили Dbugger. PHP фактически подбирает расширение Imagick просто отлично, но Imagick использует версию «usr/bin» Imagemagick вместо версии «app/bin», установленной с помощью [this] (https://github.com/aarondfrancis/heroku -buildpack-imagemagick/blob/master/support/package_imagemagick) buildpack. –

0

Вы можете иметь неправильный конец палки. Вы не компилируете расширение Imagick против исполняемых файлов Image Magick, а против библиотек Image Magick. т.е. если вы устанавливаете Image Magick через диспетчер пакетов, вы должны установить «ImageMagick-devel», а не «ImageMagick»

Затем вы можете установить каталог, в котором Imagick должен искать библиотеки Image Magick с настройкой:

./configure --libdir=/usr/lib64 --with-php-config=/usr/local/bin/php-config 

Или аналогично в зависимости от того, где установлены библиотеки, а затем вызвать make.

Однако, если вы уже компилируете Imagick, вы можете также скомпилировать Image Magick из источника.

Редактировать

Если бы я стоял позади вас, это, вероятно, будет разрешима в течение 5 минут. Я предлагаю:

1) Найдите, где библиотеки на самом деле находятся в вашей системе, - в частности, найдите файл libMagickWand-6.Q16.so.

2) Убедитесь, что вы копируете библиотеки Image Magick, которые хотите использовать на реальном сервере, а также библиотеку Imagick, если вы не статически ее компилируете (чего вы, вероятно, нет).

3) Переименуйте библиотеку, которую вы не хотите компилировать. Посмотрите, если компиляция Imagick выбирает правильную версию.

4) Отладка скрипта ./configure для Imagick - вы можете распечатать материал, словно AC_MSG_RESULT(libs before $DEBUG_LIBS) как я должен был сделать для одного вопроса: https://github.com/mkoppanen/imagick/issues/8 и убедиться в правильности его выбора правильного версии вверх при компиляции.

5) Поднимите проблему на https://github.com/mkoppanen/imagick/ и получите изображение Imagick.

+0

Хм, интересно. Думаю, я предположил, что расширение Imagick просто говорило о том, какие исполняемые файлы были установлены в системе. Я использую этот [buildpack] (https://github.com/aarondfrancis/heroku-buildpack-imagemagick/blob/master/support/package_imagemagick), чтобы построить Imagemagick на dynoky heroku, а затем я увеличил расширение Imagick после этого , Как это сделать? –

+0

@AaronFrancis Как вы строите изображение Магия должна быть в порядке. Можете ли вы опубликовать, как вы строите расширение Imagick? – Danack

+0

Я следовал [этой статье] (http://www.amido.co.uk/chris-gray/compiling-php-extensions-like-mongo-and-memcache-on-heroku/), но просто назовите 'make' с нет параметров, scp его на мою машину, а затем поместить в папку с моим приложением и добавить php.ini –