Pada beberapa kasus, terkadang kita membutuhkan PHP dengan modul GD yang mengharuskan dapat membproses file dengan mimetype atau ekstensi JPEG sekaligus FreeType. Modul GD sendiri merupakan sebuah bagian dari PHP yang digunakan untuk memproses grafik.
Kali ini studi kasus saya merupakan aplikasi terbuka Senayan Library Management System (SLiMS). Aplikasi ini membutuhkan modul GD dengan dukungan FreeType yang digunakan untuk membuat kode batang (barcode).
Pada dasarnya PHP telah menyediakan script compiler pada saat docker build yang digunakan untuk memasang GD modul pada package utamanya, hanya saja setelah saya telusuri dukungan terhadap FreeType dibatasi, sehingga terjadi error seperti diatas. Error diatas disebabkan karena sebenarnya GD telah berhasil terpasang namun belum bisa menggunakan FreeType. Untuk itulah dibutuhkan konfigurasi ulang sesaat sebelum melakukan install GD. Barulah ketika sudah mengaktifkan FreeType kita dapat mengintegrasikan GD pada PHP. PHP melakukan ini untuk menjaga agar image nya tetap pada kondisi minimalis dan maintainable, sehingga konsep efesiensi dapat tercapai.
Berikut dasar dari Dockerfile yang selalu saya gunakan untuk mengerjakan project.
Kemudian, berikut adalah Dockerfile yang telah mendapatkan perbaikan aktivasi GD FreeType
Hal paling mendasar untuk mengaktifkan gd dengan dukungan FreeType adalah melakukan kompilasi terhadap binary gd sembari memberikan flag --enable-gd --with-freetype --with-jpeg --with-webp.
Pada baris setelah instalasi yaz saya membuat sebuah variable environtment untuk menyimpan nilai konfigurasi GD yang dipanggil dibaris bawahnya. Selanjutnya saya copy library GD pada directory yang seharusnya.
Perlu diingat bahwa sebelum melakukan meng-copy extention gd pada direktori extention maka perlu untuk mengetahui lokasi aslinya. Kita dapat melakukan ls terhadap direktori /usr/local/lib/php/extensions/ di dalam kontainer yang aktif.
Hasilnya pada aplikasi SLiMS tidak muncul lagi error yang intinya keterbatasan dukungan GD terhadap FreeType.
Sumber:
- “PHP 7.4 - Problems on Gd with JPEG and Freetype Support · ISSUE #926 · Docker-Library/PHP.” GitHub, Paulocoutinhox, 19 Dec. 2019, github.com/docker-library/php/issues/926#issuecomment-567201468. Accessed 27 July 2023.