2012-07-03 14 views
6

Potrzebuję wykonać pewne czynności na obrazkach jpeg - PHP GD Heroku nie pozwala na to. Czytałem, że jest to możliwe z Imagick, więc przepisać kod, pchnął go do Heroku i ...Imagick na heroku - czy to możliwe?

PHP Fatal error: Class 'Imagick' not found in [...]

Więc robię coś źle (kod działa lokalnie)?

$tlo = new Imagick(); 
$tlo->newImage(640, 480, new ImagickPixel('white')); 
$tlo->setImageFormat('jpg'); 

Czy jest jakiś sposób pracy z jpg na Heroku?

+1

chodzi o robi źle - tak, próbujesz uruchomić kod w innym środowisku, bez pełnego zrozumienia, jak to działa. 'Imagick' w przeciwieństwie do' GD' nie jest częścią php, wymaga zewnętrznej biblioteki (ImageMagick) i musi być dodatkowo zainstalowany. –

+0

Oto moje skompilowane 'imagick.so' na [github] (https://github.com/alkhoo/heroku-cedar-php-extension) z instrukcjami. Zajmuje 5 minut, aby je skonfigurować. –

Odpowiedz

2

ImageMagick, narzędzie wiersza polecenia i biblioteka programowania, musi być zainstalowany w systemie, aby Imagick działał.

Jeśli to nie działa, to prawdopodobnie sieciowe dynamiczne maszyny Heroku nie mają tego domyślnie zainstalowanego. Masz dwie opcje: możesz znaleźć jakiś zawiły sposób pakowania programu ImageMagick za pomocą samej aplikacji, na przykład dodając skompilowane pliki binarne do drzewa źródłowego git. Możesz też zmodyfikować Heroku PHP buildpack, czyli zestaw reguł, które konfigurują dyno internetowe przed wdrożeniem aplikacji, aby zainstalować ImageMagick wraz z Apache i samym PHP. To drugie podejście jest bardziej prawdopodobne.

Po zmodyfikowaniu buildpack, zmień aplikację tak, aby wskazywała na twój buildpack widelec za pomocą narzędzi Heroku linii poleceń (opcja --buildpack) i ponownie wdróż.

+0

Dzięki @Andrew Gorcester, czy możesz mi powiedzieć, jak dodać obraz do niestandardowego buildpacka? Dzięki –

+0

Niestety @OscarFanelli, nie korzystałem z tej funkcji od trzech lat, więc nie pamiętam ani nie mam aktualnych informacji. Powodzenia! –