Ekstensi PHP untuk pemula sebaiknya dipilih berdasarkan kebutuhan proyek, bukan karena ikut daftar di forum. Dari puluhan ekstensi yang tersedia, hanya segelintir yang benar-benar dipakai saat belajar membuat aplikasi web. Mengaktifkan semuanya memperbesar permukaan serangan dan mempersulit debugging.

Berikut tujuh ekstensi yang paling sering muncul di pertanyaan pemula, lengkap dengan alasan mengaktifkan atau membiarkannya nonaktif.

Mulai dari cara membaca php.ini

Semua ekstensi PHP dikendalikan dari file php.ini. Di sana ada baris seperti extension=mysqli yang diawali titik koma untuk menonaktifkan. Menghapus titik koma berarti mengaktifkan. Setelah mengubah file, restart layanan PHP atau web server agar perubahan terbaca.

Kalau bingung soal lingkungan eksekusi, lihat dulu 7 cara menjalankan PHP tanpa Apache. Cara menjalankan PHP menentukan lokasi php.ini yang harus diedit. Di XAMPP biasanya ada di folder php, sementara di Linux sering berada di /etc/php/.

1. mysqli dan pdo_mysql: pilih salah satu

Keduanya menghubungkan PHP ke MySQL. mysqli hanya untuk MySQL, sedangkan pdo_mysql adalah driver PDO yang mendukung banyak database lewat antarmuka seragam.

Untuk pemula, PDO biasanya lebih menguntungkan karena prepared statement-nya konsisten dan kode tidak perlu diubah banyak saat pindah database. Namun mysqli lebih sederhana untuk query cepat. Perbandingan mendalamnya ada di PDO vs MySQLi vs Query Builder.

Jangan aktifkan keduanya kalau proyek hanya memakai satu. Setiap ekstensi yang aktif menambah beban kecil pada proses PHP dan membuka permukaan konfigurasi yang harus dijaga.

2. mbstring: wajib untuk teks non-ASCII

Fungsi seperti strlen() menghitung byte, bukan karakter. Kata “café” akan dihitung lima byte oleh strlen(), padahal empat karakter. mbstring menyediakan mb_strlen(), mb_substr(), dan mb_strtolower() yang sadar encoding.

Aktifkan ekstensi ini kalau aplikasi menerima input pengguna berbahasa Indonesia dengan huruf beraksen, atau data dari database ber-charset UTF-8. Tanpa mbstring, pemotongan teks bisa menghasilkan karakter rusak di tengah kata.

3. intl: untuk format tanggal dan angka lokal

intl memungkinkan PHP memformat tanggal, mata uang, dan angka sesuai locale. Contohnya menampilkan “Rp1.500.000” atau “29 Oktober 2026” tanpa merakit string manual.

Ukuran ekstensi ini cukup besar karena membawa data ICU. Kalau proyek hanya menampilkan tanggal dalam format tetap, fungsi date() sudah cukup dan intl bisa dibiarkan nonaktif.

4. curl: untuk memanggil API eksternal

Pemula yang mulai berinteraksi dengan layanan pihak ketiga, seperti API pembayaran atau layanan cuaca, membutuhkan curl. Ekstensi ini menangani request HTTP dengan kontrol timeout, header, dan metode yang lebih lengkap dibanding file_get_contents().

Aktifkan curl saat proyek memang memanggil API. Untuk sekadar mengambil halaman HTML sederhana, file_get_contents() masih memadai asalkan allow_url_fopen aktif.

5. gd atau imagick: pengolahan gambar

Kalau aplikasi menerima unggahan foto, pemrosesan gambar sering diperlukan: membuat thumbnail, mengubah ukuran, atau menambahkan watermark. gd lebih ringan dan mudah dipasang. imagick mendukung lebih banyak format dan operasi kompleks, tetapi instalasinya lebih berat.

Untuk pemula, gd sudah cukup. Panduan validasi dan penyimpanan gambar di PHP bisa dilihat di Panduan Upload Gambar di PHP. Di sana dijelaskan juga cara memeriksa tipe MIME, yang tidak bergantung pada ekstensi gambar tertentu.

6. opcache: performa, bukan fitur

opcache menyimpan bytecode PHP yang sudah dikompilasi sehingga setiap request tidak perlu mengulang parsing. Efeknya terasa pada aplikasi dengan banyak file, seperti framework.

Saat belajar, opcache bisa membingungkan karena perubahan kode tidak langsung terlihat sampai cache dibersihkan. Matikan dulu selama pengembangan, lalu aktifkan di server produksi. Pengaturan opcache.validate_timestamps menentukan seberapa sering PHP memeriksa perubahan file.

7. xdebug: alat debugging terpisah

xdebug bukan ekstensi untuk fitur aplikasi, melainkan alat bantu debugging dan profiling. Dengan xdebug, pesan error menjadi lebih rinci dan var_dump() tampil lebih terbaca.

Namun xdebug memperlambat eksekusi secara nyata, kadang beberapa kali lipat. Aktifkan hanya di lingkungan lokal. Di server produksi, ekstensi ini sebaiknya tidak dipasang. Perbandingan metode debug lain ada di Perbandingan Cara Debug PHP.

Tabel perbandingan singkat

Ekstensi Kegunaan utama Kapan diaktifkan
mysqli / pdo_mysql Koneksi ke MySQL Saat proyek memakai database MySQL
mbstring Teks multibyte Selalu, untuk aplikasi berbahasa Indonesia
intl Format locale Jika butuh format tanggal/angka lokal
curl Request HTTP Saat memanggil API eksternal
gd / imagick Pengolahan gambar Jika ada unggahan dan manipulasi gambar
opcache Cache bytecode Di server produksi, bukan saat ngoding
xdebug Debugging Hanya di lingkungan lokal

Cara memeriksa ekstensi yang sudah aktif

Jalankan php -m di terminal untuk melihat daftar ekstensi yang termuat. Alternatif lain, buat file berisi <?php phpinfo(); lalu buka di browser. Hapus file itu setelah selesai karena phpinfo menampilkan informasi sensitif tentang server.

Kalau baru mulai belajar PHP, urutan prioritasnya sederhana: aktifkan mbstring, satu driver database, dan curl jika perlu. Sisanya menyusul saat proyek menuntut. Panduan belajar dari nol bisa dibaca di Tips Praktis Belajar PHP untuk Pemula.

Kesalahan umum saat mengaktifkan ekstensi

  • Mengedit php.ini yang salah. Sering ada dua file, untuk CLI dan untuk web server. Periksa lewat php --ini.
  • Lupa restart layanan. Perubahan tidak akan terbaca sampai PHP dijalankan ulang.
  • Mengaktifkan ekstensi tanpa library pendukung. Contohnya imagick butuh ImageMagick terpasang di sistem.
  • Membiarkan xdebug aktif di produksi sehingga response melambat.

Ringkasan

Untuk pemula, ekstensi PHP yang paling masuk akal diaktifkan adalah mbstring dan satu driver database. Tambahkan curl, gd, atau intl hanya ketika proyek membutuhkannya. opcache dan xdebug punya tempatnya masing-masing: opcache di produksi, xdebug di lokal. Menjaga daftar ekstensi tetap pendek membuat konfigurasi lebih mudah dilacak saat muncul error.

Pertanyaan yang Sering Diajukan

Apakah semua ekstensi PHP harus diaktifkan agar aplikasi berjalan?

Tidak. Sebagian besar aplikasi hanya memakai beberapa ekstensi. Mengaktifkan semuanya menambah beban dan memperluas permukaan serangan. Aktifkan yang dipakai proyek saja.

Bagaimana cara tahu ekstensi mana yang hilang saat error?

Pesan error biasanya menyebut nama fungsi yang tidak ditemukan, misalnya Call to undefined function mb_strlen(). Nama fungsi itu menunjukkan ekstensi yang perlu diaktifkan. Cek dokumentasi PHP untuk memastikan ekstensi pemiliknya.

Apakah mengaktifkan ekstensi bisa merusak aplikasi yang sudah jalan?

Bisa, terutama kalau ada dua ekstensi yang menyediakan fungsi serupa atau konfigurasi saling bertentangan. Selalu uji di lingkungan lokal sebelum mengubah server produksi, dan catat perubahan di php.ini.