Przejdź do treści

Jak zainstalować rozszerzenie php ImageMagick do użytku na serwerze IIS na serwerze Windows

    (1) Pobierz instalator ImageMagick

    • Przejdź do https://www.imagemagick.org/
    • Kliknij „Pobierz” na pasku menu
    • Następnie wybierz „Windows Binary Releases” w górnych linkach lub przewiń w dół
    • Wybierz „Win32 dynamic at 16 bits-per-pixel component”, upewnij się, że wybierasz składnik dynamiczny, a nie statyczny.

    (2) Pobierz moduł php dla ImageMagick

    • Przejdź do https://windows.php.net/downloads/pecl/releases/imagick/
    • Wybierz najwyższą wersję, która nie jest wersją „RC” (Release Candidate) – obecnie 3.7.0
    • Wybierz wpis dla wersji PHP (8.1), dla VC14, x86 i „NTS” (Non Thread Safe) dla IIS
    • Pobierz i zapisz plik ZIP.

    (3) Pobierz pakiet zależności dla PHP, aby załadować/użyć ImageMagick

    • Przejdź do https://windows.php.net/downloads/pecl/deps/
    • Wybierz pakiet „ImageMagick” o najwyższym numerze wersji
      • zauważ, że może to nie być ta sama wersja, co pozycja w punkcie (1.) powyżej
    • Wybierz wersję „vc14” i „x86”

    (4) Odblokuj każdy z pobranych plików

    Może to być konieczne lub nie, w zależności od sposobu pobrania, ale zawsze należy sprawdzać i „odblokowywać” pobrane pliki, jeśli to konieczne.

    • Kliknij prawym przyciskiem myszy każdy plik i wybierz „Właściwości” z menu podręcznego
      • jeśli okno dialogowe właściwości pokazuje tekst „Ten plik pochodzi z innego komputera i może zostać zablokowany, aby pomóc chronić ten komputer”,
      • kliknij przycisk „Odblokuj”.
      • Kliknij OK.

    Jeśli nie „odblokujesz” pobranych plików, zwłaszcza plików ZIP, poszczególne pliki, które są instalowane lub kopiowane, nadal mogą być oznaczane jako „zablokowane”, co czasami może powodować dziwne problemy podczas uruchamiania oprogramowania.

    (5) Instalowanie aplikacji Imagick

    • Uruchom ImageMagick-7.0.7-8-Q16-x86-dll.exe, aby go zainstalować
    • Zaakceptuj umowę licencyjną
    • Zaakceptuj ustawienia domyślne na każdym ekranie w procesie instalacji.

    Po zakończeniu instalacji, aby sprawdzić, czy się powiodła, otwórz wiersz polecenia i uruchom następujące dwa polecenia:

    magick wizard: wizard.jpg
    magick wizard.jpg win:

    Powinno to wyświetlić okno „IMDisplay” przedstawiające szkic/obraz Czarodzieja przy sztaludze tworzącego portret Mony Lisy.

    (6) Zainstaluj zależności

    • Rozpakuj plik pobrany w kroku 3.
    • Przejdź do katalogu bin
    • skopiuj pliki IM_MOD_RL_*.dll (125 plików) do folderu z zainstalowaną wersją ImageMagick, na przykład C:\Program Files (x86)\ImageMagick-7.0.7-Q16 Wróć do katalogu bin
    • skopiuj pliki CORE_RL_*.dll (20 plików) do folderu z zainstalowaną wersją ImageMagick, na przykład C:\Program Files (x86)\ImageMagick-7.0.7-Q16
      • W monicie, jeśli chcesz nadpisać/ zmień nazwę, wybierz nadpisz

    Uwaga, spowoduje to uszkodzenie wersji polecenia Imagick. magick: Niewłaściwa wersja biblioteki JPEG: biblioteka to 80, dzwoniący oczekuje 62

    (7) Instalowanie biblioteki dll rozszerzenia Imagick php

    • Rozpakuj plik pobrany w kroku 2.
    • skopiuj plik php_imagick.dll do folderu „ext” dla zainstalowanej wersji PHP na serwerze, np. C:\php\8.1\ext.

    Nie kopiuj plików CORE_RL_*
    W niektórych artykułach w Internecie zobaczysz instrukcje kopiowania plików CORE_RL_* z tego zestawu w celu zastąpienia plików w folderze ImageMagick, ale jest to nieprawidłowe; odpowiednie wersje tych plików zostały skopiowane w kroku 6.

    (8) Zmodyfikuj PHP.ini

    • zmodyfikuj plik php.ini w folderze oprogramowania PHP, na przykład „C:\PHP\8.1\php.ini”
    • Dodaj następujący wiersz do sekcji zawierającej inne rozszerzenia:
    extension=php_imagick.dll

    (9) Uruchom ponownie serwer.

    Ponowne uruchomienie IIS nie wydaje się wystarczające, musisz ponownie uruchomić całą maszynę. Prawdopodobnie ma to związek z tym, że IIS nie rozpoznaje wpisu PATH, który wprowadził Imagick.

    (10) Przetestuj generowanie obrazu za pomocą ImageMagick w PHP

    Utwórz plik PHP w katalogu głównym sieci, zawierający następujące elementy (skopiowałem to z jednego z wpisów w tym elemencie Verify ImageMagick install ):

    <?php
    error_reporting(E_ALL); 
    ini_set( 'display_errors','1');
    /* Create a new imagick object */
    $im = new Imagick();
    /* Create new image. This will be used as fill pattern */
    $im->newPseudoImage(50, 50, "gradient:red-black");
    /* Create imagickdraw object */
    $draw = new ImagickDraw();
    /* Start a new pattern called "gradient" */
    $draw->pushPattern('gradient', 0, 0, 50, 50);
    /* Composite the gradient on the pattern */
    $draw->composite(Imagick::COMPOSITE_OVER, 0, 0, 50, 50, $im);
    /* Close the pattern */
    $draw->popPattern();
    /* Use the pattern called "gradient" as the fill */
    $draw->setFillPatternURL('#gradient');
    /* Set font size to 52 */
    $draw->setFontSize(52);
    /* Annotate some text */
    $draw->annotation(20, 50, "Hello World!");
    /* Create a new canvas object and a white image */
    $canvas = new Imagick();
    $canvas->newImage(350, 70, "white");
    /* Draw the ImagickDraw on to the canvas */
    $canvas->drawImage($draw);
    /* 1px black border around the image */
    $canvas->borderImage('black', 1, 1);
    /* Set the format to PNG */
    $canvas->setImageFormat('png');
    /* Output the image */
    header("Content-Type: image/png");
    echo $canvas;
    ?>

    Uruchom ten plik PHP w przeglądarce. Powinien wyświetlać obraz zawierający tekst „Hello World!”.

    (12) Sprawdź błędy

    Sprawdź plik php-errors.log pod kątem błędów.
    Zdefiniowaną lokalizację pliku php-errors.log można znaleźć w pliku php.ini. Sprawdź ten plik pod kątem ostatnich błędów związanych z instalacją ImageMagick.

    Pliki PDF wymagają Ghostscript
    Po zainstalowaniu i skonfigurowaniu wszystkich powyższych, ImageMagick może być używany w PHP do konwersji obrazów, ale nie może być używany do konwersji plików PDF na obrazy. W tym ostatnim kroku wydawało się konieczne zainstalowanie Ghostscript – z https://www.ghostscript.com/download/gsdnld.html i działało poprawnie tylko wtedy, gdy zainstalowałem 64-bitową wersję Ghostscript (mimo że wszystko w przeciwnym razie zainstalowałem wersję 32-bitową). Wystarczyło zainstalować Ghostscript; nie były wymagane żadne zmiany w pliku php.ini ani w żadnej innej konfiguracji.

    Print Friendly, PDF & Email