Cara Menjalankan Banyak Versi PHP di Satu Server
Pasang beberapa versi PHP-FPM berdampingan di Ubuntu atau Debian, lalu atur tiap website di Nginx memakai versi PHP yang berbeda tanpa saling ganggu.
Jawaban singkat
Satu server bisa menjalankan beberapa versi PHP sekaligus dengan PHP-FPM. Setiap versi berjalan sebagai layanan terpisah dengan socket sendiri, lalu tiap website di Nginx diarahkan ke socket versi yang dibutuhkannya.
Daftar isi
Bisa. Satu server Linux bisa menjalankan PHP 8.2, 8.3, dan 8.4 sekaligus, dan setiap website memakai versi yang cocok untuknya. Kuncinya adalah PHP-FPM: setiap versi berjalan sebagai layanan sendiri dengan socket sendiri, lalu web server tinggal diarahkan ke socket yang tepat.
Kenapa ini penting? Karena aplikasi jarang bergerak serempak. Toko online lama mungkin belum siap pindah dari PHP 8.2, sementara aplikasi Laravel baru justru meminta PHP 8.3 ke atas. Tanpa banyak versi, kamu terpaksa memilih: menyewa server kedua, atau memaksa aplikasi lama naik versi sebelum siap.
Kenapa satu server perlu lebih dari satu versi PHP?
Alasan paling umum adalah masa transisi. Setiap cabang PHP punya umur dukungan yang jelas. Per 6 November 2026, halaman resmi php.net mencatat cabang yang masih didukung:
| Versi | Rilis awal | Dukungan keamanan sampai |
|---|---|---|
| PHP 8.2 | 8 Desember 2022 | 31 Desember 2026 |
| PHP 8.3 | 23 November 2023 | 31 Desember 2027 |
| PHP 8.4 | 21 November 2024 | 31 Desember 2028 |
| PHP 8.5 | 20 November 2025 | 31 Desember 2029 |
Artinya, website yang masih di PHP 8.2 perlu dipindah sebelum akhir 2026. Dengan banyak versi di satu server, kamu bisa memasang PHP 8.4 di samping 8.2, menguji salinan website di versi baru, lalu memindahkannya hanya dengan mengubah satu baris konfigurasi. Kalau ada yang rusak, kembali ke versi lama juga semudah itu.
Alasan lain:
- Beberapa klien di satu VPS, masing-masing dengan aplikasi berbeda umur.
- Plugin atau modul lama yang belum mendukung versi terbaru.
- Uji kompatibilitas sebelum upgrade besar.
Dari mana mendapatkan banyak versi PHP?
Repositori bawaan Ubuntu dan Debian hanya menyediakan satu versi PHP per rilis OS. Ubuntu 24.04 misalnya membawa PHP 8.3. Untuk versi lain, sumber yang paling banyak dipakai adalah paket dari Ondřej Surý, pengelola paket PHP di Debian:
- Ubuntu: PPA
ppa:ondrej/phpdi Launchpad. - Debian: repositori
packages.sury.org, petunjuknya ada di deb.sury.org.
Paket dari sumber ini diberi nama per versi (php8.2-fpm, php8.4-fpm, dan seterusnya), sehingga bisa dipasang berdampingan tanpa bentrok.
Langkah memasang beberapa versi PHP-FPM di Ubuntu
Contoh berikut untuk Ubuntu 24.04 dengan Nginx yang sudah terpasang. Kalau belum, ikuti dulu panduan memasang Nginx, MariaDB, dan PHP di Ubuntu 24.04.
- Tambahkan PPA:
sudo apt install software-properties-commonlalusudo add-apt-repository ppa:ondrej/phpdansudo apt update. - Pasang versi yang dibutuhkan beserta ekstensinya, misalnya
sudo apt install php8.2-fpm php8.2-mysql php8.2-mbstring php8.2-xml php8.2-curl. - Ulangi untuk versi lain:
sudo apt install php8.4-fpm php8.4-mysql php8.4-mbstring php8.4-xml php8.4-curl. - Pastikan semua layanan aktif:
systemctl status php8.2-fpm php8.3-fpm php8.4-fpm. - Cek socket yang tersedia:
ls /run/php/. Kamu akan melihat file sepertiphp8.2-fpm.sockdanphp8.4-fpm.sock.
Di Debian, langkahnya sama setelah repositori packages.sury.org ditambahkan sesuai petunjuk resmi di deb.sury.org. Jangan memakai PPA Ubuntu di Debian.
Bagaimana mengarahkan tiap website ke versi PHP tertentu?
Di Nginx, versi PHP ditentukan oleh baris fastcgi_pass di server block masing-masing website. Contoh website lama yang tetap di PHP 8.2:
server {
listen 80;
server_name toko-lama.example;
root /var/www/toko-lama;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
}
Website lain cukup memakai unix:/run/php/php8.4-fpm.sock. Setelah mengubah konfigurasi, jalankan sudo nginx -t untuk memeriksa sintaks, lalu sudo systemctl reload nginx. Kalau kamu belum terbiasa memisahkan konfigurasi per domain, baca panduan server block Nginx untuk banyak domain.
Untuk Apache, prinsipnya sama: pakai PHP-FPM lewat mod_proxy_fcgi, lalu di VirtualHost arahkan SetHandler ke socket versi yang diinginkan, misalnya "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost".
Bagaimana dengan PHP di terminal (CLI)?
Perintah php di terminal hanya menunjuk ke satu versi. Ini yang sering membingungkan: website sudah PHP 8.4, tapi composer atau cron masih jalan di versi lain.
Ada dua cara mengatasinya:
- Panggil versi secara langsung, misalnya
php8.4 artisan migrateatauphp8.2 /usr/local/bin/composer install. Cara ini paling aman untuk cron karena tidak bergantung pada pengaturan global. - Ganti versi bawaan dengan
sudo update-alternatives --config php, lalu pilih versi dari daftar. Perubahan ini berlaku untuk seluruh server.
Cek hasilnya dengan php -v. Ingat juga bahwa setiap versi punya php.ini sendiri, untuk FPM di /etc/php/8.x/fpm/php.ini dan untuk CLI di /etc/php/8.x/cli/php.ini. Mengubah upload_max_filesize di satu versi tidak berpengaruh ke versi lain.
Apa yang sering terlewat?
Beberapa hal kecil yang biasanya baru ketahuan saat website error:
- Ekstensi harus dipasang per versi.
php8.2-gdtidak berlaku untuk PHP 8.4. Bandingkan denganphp8.2 -mdanphp8.4 -m. - RAM bertambah. Setiap layanan FPM menyimpan proses sendiri. Di VPS kecil, atur
pm = ondemanddi pool yang jarang dipakai, dan hentikan versi yang tidak lagi dipakai dengansudo systemctl disable --now php8.x-fpm. - Pembaruan keamanan. Paket dari PPA ikut diperbarui lewat
apt upgrade, tapi versi yang sudah lewat masa dukungannya di php.net tidak lagi mendapat perbaikan dari pengembang PHP. Jadikan multi versi sebagai jembatan, bukan tempat tinggal permanen. - Panel hosting. Kalau kamu memakai cPanel atau panel lain, pemilihan versi biasanya sudah tersedia per domain. Caranya dibahas di cara mengganti versi PHP di hosting dengan aman.
Pertanyaan yang sering diajukan
Apakah menjalankan banyak versi PHP membuat server lambat?
Tidak secara langsung. Yang bertambah adalah pemakaian RAM karena tiap versi FPM punya proses sendiri. Website tetap dilayani oleh satu versi saja.
Bisakah dua website memakai versi PHP yang sama tapi pengaturan berbeda?
Bisa. Buat dua pool FPM terpisah di versi yang sama, masing-masing dengan socket dan nilai php_admin_value sendiri.
Bagaimana memastikan website benar memakai versi yang dimaksud?
Buat file sementara berisi <?php echo PHP_VERSION; di folder website, buka di browser, lalu hapus file itu setelah dicek.


