Cara Jalankan Banyak Versi PHP (5.6, 7.x) dengan Apache di Ubuntu 18.04 LTS

Cara Jalankan Banyak Versi PHP (5.6, 7.x) dengan Apache di Ubuntu 18.04 LTS

Sering terjadi kasus developer ingin deploy beberapa aplikasi web PHP ke satu server yang sama dengan berbagai versi PHP yang berbeda. Sementara secara default di server yang tersedia hanya satu versi PHP saja. Nah, di artikel ini dibahas mengenai cara install dan setting untuk menjalankan banyak versi PHP (5,6 7.x) dengan Apache web server di Ubuntu 18.04 LTS.

1. Install Apache

Install Apache dan modul FastCGI.

2. Install PHP Banyak Versi

Install PHP multi versi menggunakan repository dari PPA (Personal Package Archives), karena versi PHP yang tersedia di repository default Ubuntu 18.04 LTS yaitu PHP v7.2.

Cara Jalankan Banyak Versi PHP dengan Apache di Ubuntu 18.04 LTS
Cek versi Ubuntu dan paket php dari repository default

Mencari nama paket modul atau extension PHP gunakan perintah apt search atau apt-cache search.

Misalnya mencari modul untuk php7.2.

Cara Jalankan Banyak Versi PHP dengan Apache di Ubuntu 18.04 LTS
Daftar modul PHP

Menguji hasil install PHP dengan menampilkan versi PHP.

Cara Jalankan Banyak Versi PHP dengan Apache di Ubuntu 18.04 LTS
Cek hasil install setiap versi PHP

Setting versi default PHP untuk php-cli, misalnya ingin memakai versi PHP 7.2 sebagai versi default.

Cara Jalankan Banyak Versi PHP dengan Apache di Ubuntu 18.04 LTS
Setting versi PHP untuk command php

3. Setting Apache Banyak versi PHP

Aktif modul Apache yang dibutuhkan.

Masing-masing versi PHP dibuatkan virtualhost.

  • PHP v5.6 = php56.aplikasi.oke
  • PHP v7.0 = php70.aplikasi.oke
  • PHP v7.1 = php71.aplikasi.oke
  • PHP v7.2 = php72.aplikasi.oke
  • PHP v7.3 = php73.aplikasi.oke

Membuat file virtualhost php56.aplikasi.oke.conf untuk PHP v5.6.

Isi dari file virtualhost php56.aplikasi.oke.conf

Pada file virtualhost PHP v5.6 di atas, opsi SetHandler yang merupakan versi PHP yang mengeksekusi script file .php.

Lanjutkan dengan membuat file virtualhost untuk versi PHP yang lain, sesuaikan opsi SetHandler, ServerName, DocumentRoot, ErrorLog dan CustomLog.

Setelah semua setting virtualhost selesai, lanjut membuat direktori dan file index.php yang berisi phpinfo untuk masing-masing versi PHP.

Terakhir aktifkan virtualhost dan restart Apache.

4. Pengujian

Browsing masing-masing subdomain, tiap subdomain harus menampilkan versi PHP yang berbeda.

Cara Jalankan Banyak Versi PHP dengan Apache di Ubuntu 18.04 LTS
Browsing setiap versi PHP

5. Beda Versi PHP di Direktori Tertentu

Virtualhost di atas berlaku untuk subdomain, sehingga file yang berada dalam direktori dan sub-direktori subdomain tersebut menjalankan versi PHP yang sama. Muncul pertanyaan bagaimana caranya jika masih dalam satu domain atau subdomain ingin menjalankan PHP dengan versi berbeda di direktori tertentu? Jawabannya dengan cara menambah opsi Directory di setting virtualhost.

Misalnya DocumentRoot /var/www/aplikasi.oke dengan url akses http://aplikasi.oke dan sub-direktori lain menjalankan PHP v5.6, sementara khusus untuk sub-direktori /var/www/aplikasi.oke/v2 dengan url akses https://aplikasi.oke/v2 menjalankan PHP v7.2.

Cara Jalankan Banyak Versi PHP dengan Apache di Ubuntu 18.04 LTS
Browsing PHP beda versi di direktori tertentu

Selamat mencoba 🙂

21 Comments

  1. Barokallah…Mantap2 tutorialnya pak Musa. ijin sy masukkan blog utk dokumentasi dengan menyertakan sumber/referensi dari pak Musa. terima kasih.

  2. Web saya pake php 7.2
    Skripnya php 7.xx
    Sun domainnya php7.xx migrasi dari php5.xx
    Di localhost berjalan normal skrip tsb. Tapi pas dihosting ada yg tidak jalan,,
    Mohon pencerahan dari Suhu,, Maklum masih newbie🙏🙏🙏

  3. jika kita ingin menginstall mariadb server dan phpmyadmin apakah jalan multi versi php, terkadang kalau kita ingin menjalankan phpmyadmin suka blank web phpmyadminnya ?

    • buatkan konfigurasi virtual host khusus phpmyadmin, pasang versi php yang sesuai dengan requirement versi phpmyadmin yang digunakan. jika blank, cek error log.

Leave a Reply

Your email address will not be published. Required fields are marked *