“PHP saya versi berapa?” adalah pertanyaan yang akan Anda tanyakan berkali-kali sepanjang karier: saat membaca persyaratan sebuah package, saat mengikuti tutorial dengan fitur terbaru, atau saat mendiagnosis kenapa kode berjalan di komputer rekan tetapi gagal di komputer Anda. Pada chapter ini kita akan membaca informasi versi dari terminal, mengambilnya dari dalam skrip melalui konstanta dan fungsi bawaan, lalu membandingkan dua nomor versi dengan cara yang benar.
Informasi Versi dari Terminal #
Perintah tercepat untuk mengetahui versi PHP adalah php -v (atau bentuk panjangnya php --version — keduanya identik):
php -vOutput yang Dihasilkan:
PHP 8.4.23 (cli) (built: Jul 7 2026 05:22:53) (NTS gcc 14.2.0)
Copyright (c) The PHP Group
Built by static-php-cli 2.8.6
Zend Engine v4.4.23, Copyright (c) Zend TechnologiesMari kita baca baris pertama keluaran tersebut karena informasi terpenting ada di sana. Potongan PHP 8.4.23 adalah nomor versi: versi besarnya 8.4, versi kecilnya 23. Potongan (cli) menandakan SAPI yang berjalan, (built: ...) mencatat kapan PHP tersebut dikompilasi, dan NTS berarti Non Thread Safe. Keluaran di atas berasal dari komputer tempat materi ini ditulis, jadi tanggal built dan baris penyusun akan berbeda di komputer Anda. Baris-baris berikutnya menampilkan hak cipta The PHP Group serta versi Zend Engine — mesin yang benar-benar mengeksekusi kode PHP di bawah tenda.
Konstanta Versi di Dalam Skrip #
Kadang kita perlu tahu versi PHP dari dalam program, misalnya untuk memilih jalur kode sesuai fitur yang tersedia. PHP menyediakan sekumpulan konstanta untuk itu:
<?php
echo "Versi lengkap : " . PHP_VERSION . "\n";
echo "Versi mayor : " . PHP_MAJOR_VERSION . "\n";
echo "Versi minor : " . PHP_MINOR_VERSION . "\n";
echo "Versi rilis : " . PHP_RELEASE_VERSION . "\n";
echo "ID versi : " . PHP_VERSION_ID . "\n";Output yang Dihasilkan:
Versi lengkap : 8.4.23
Versi mayor : 8
Versi minor : 4
Versi rilis : 23
ID versi : 80423Konstanta PHP_MAJOR_VERSION, PHP_MINOR_VERSION, dan PHP_RELEASE_VERSION memecah nomor versi menjadi komponen-komponennya. Konstanta PHP_VERSION_ID adalah bentuk numerik yang dirancang khusus untuk perbandingan: nilainya dihitung dengan rumus mayor × 10000 + minor × 100 + rilis. Untuk PHP 8.4.23, perhitungannya adalah 8 × 10000 + 4 × 100 + 23 = 80423. Bentuk numerik ini memungkinkan perbandingan versi dengan operator angka biasa, misalnya PHP_VERSION_ID >= 80100 untuk “PHP 8.1 ke atas”.
Fungsi phpversion() #
Selain konstanta, PHP menyediakan fungsi phpversion() yang mengembalikan nomor versi sebagai string. Kelebihannya, fungsi ini juga dapat menanyakan versi sebuah ekstensi:
<?php
echo "phpversion() : " . phpversion() . "\n";
echo "phpversion('curl') : " . phpversion("curl") . "\n";Output yang Dihasilkan:
phpversion() : 8.4.23
phpversion('curl') : 8.4.23Terlihat janggal? Pada lingkungan tempat materi ini diuji, ekstensi curl dikompilasi langsung ke dalam binary PHP sehingga phpversion("curl") melaporkan versi PHP itu sendiri. Pada instalasi yang memuat curl sebagai modul terpisah, nilai yang dikembalikan adalah versi ekstensi tersebut — bisa sama atau berbeda dari versi PHP. Perilaku ini normal; gunakan phpversion() tanpa argumen untuk versi PHP, dan phpversion("nama_ekstensi") saat Anda perlu mencantumkan versi ekstensi dalam laporan diagnostik.
Membandingkan Versi dengan version_compare() #
Membandingkan nomor versi adalah wilayah yang penuh jebakan, dan PHP menyediakan fungsi khusus version_compare() untuk mengatasinya. Fungsi ini memecah kedua nomor versi per komponen lalu membandingkannya secara numerik:
<?php
var_dump(version_compare("8.4.23", "8.4.0", ">="));
var_dump(version_compare("8.1.5", "8.4.0", ">="));Output yang Dihasilkan:
bool(true)
bool(false)Argumen ketiga menerima operator pembanding seperti ">=", "<", "==", atau "!=", dan fungsi mengembalikan true/false sesuai hasilnya. Tanpa argumen ketiga, version_compare() mengembalikan -1, 0, atau 1 — mirip perbandingan dua angka:
<?php
echo version_compare("8.4.23", "8.4"), "\n";
echo version_compare("8.10", "8.9"), "\n";
echo version_compare("8.4.23", "8.4.24"), "\n";Output yang Dihasilkan:
1
1
-1Baris kedua contoh di atas adalah kasus yang paling sering menjebak: 8.10 dianggap lebih besar dari 8.9 karena angka 10 dibandingkan secara numerik dengan 9. Bandingkan dengan perilaku operator string biasa:
<?php
var_dump("8.10" < "8.9");Output yang Dihasilkan:
bool(true)Operator < pada string membandingkan karakter demi karakter, dan karena karakter 1 berada sebelum 9, kesimpulannya terbalik: string "8.10" dianggap “lebih kecil”. Inilah alasan versi tidak boleh dibandingkan dengan operator string.
Sebagai rangkuman praktis, mari kita rangkai semuanya menjadi fungsi penjaga versi yang nyata dipakai di proyek:
<?php
function pastikanVersiMinimal(string $versiMinimal): void
{
if (version_compare(PHP_VERSION, $versiMinimal, "<")) {
throw new RuntimeException(
"Skrip ini membutuhkan PHP $versiMinimal atau lebih baru; versi saat ini " . PHP_VERSION
);
}
}
pastikanVersiMinimal("8.1");
echo "Versi memenuhi syarat, program lanjut.\n";Output yang Dihasilkan:
Versi memenuhi syarat, program lanjut.Fungsi pastikanVersiMinimal() membandingkan PHP_VERSION dengan syarat minimum menggunakan version_compare(); bila syarat gagal, throw menghentikan program dengan pesan yang jelas alih-alih membiarkannya berjalan dengan perilaku tak terduga.
Ringkasan #
php -v menjawab pertanyaan versi dari terminal, konstanta seperti PHP_VERSION_ID menjawabnya dari dalam skrip, dan version_compare() membandingkan dua nomor versi dengan benar tanpa terjebak perbandingan string. Dengan versi yang sudah pasti, kita siap menyelami satu lapisan lebih dalam: konfigurasi yang mengatur perilaku PHP itu sendiri.