Dalam panduan ini kita akan mengkonfigurasi Apache untuk menjalankan PHP 7.x dan PHP 5.6 secara bersamaan, dan memilih di antara keduanya menggunakan Virtual Host atau .htaccess.

Anda seharusnya sudah menginstal Apache dan menyajikan halaman web sebelum mengikuti panduan ini.

Panduan ini telah diuji pada Ubuntu 20.04, Ubuntu 18.04 dan Ubuntu 16.04, meskipun juga berguna untuk sistem berbasis Debian lainnya.

1. Tambahkan Repositori

Mari kita mulai dengan memperbarui daftar paket.

sudo apt update 

Untuk pengguna Ubuntu 20.04 dan 18.04, instal libapache2-mod-fcgid.

sudo apt install libapache2-mod-fcgid -y

Pengguna Ubuntu 16.04, instal  libapache2-mod-fastcgi.

sudo apt install libapache2-mod-fastcgi -y

Anda mungkin perlu  software-properties-common menambahkan repositori dengan  add-apt-repository.

sudo apt install software-properties-common -y

Kami akan menambahkan repositori PHP Ondřej yang memungkinkan kami mengunduh versi PHP 5.6 dan PHP 7.x yang dapat diinstal bersama, kemudian memperbarui daftar paket lagi.

sudo add-apt-repository ppa:ondrej/php && sudo apt update

Tekan  ENTER saat diminta untuk menambahkan repositori.

2. Instal PHP

Anda sekarang dapat menginstal versi PHP yang Anda butuhkan. Repositori Ondřej menyediakan PHP 5.6 dan PHP 7.x. Dalam contoh ini kita akan menginstal PHP 5.6 dan PHP 7.4.

sudo apt install php5.6 php5.6-fpm -y
sudo apt install php7.4 php7.4-fpm -y

Tekan ydan  ENTER ketika diminta untuk menginstal.

Setelah diinstal, Anda harus memiliki dua soket baru di  /var/run/php/.

ls /var/run/php/
total 8
-rw-r--r-- 1 root     root     4 Feb 17 16:50 php5.6-fpm.pid
srw-rw---- 1 www-data www-data 0 Feb 17 16:50 php5.6-fpm.sock
-rw-r--r-- 1 root     root     5 Feb 17 16:51 php7.4-fpm.pid
srw-rw---- 1 www-data www-data 0 Feb 17 16:51 php7.4-fpm.sock

Pada Langkah 3, kita akan menggunakan  <FilesMatch>direktif untuk memberi tahu Apache soket PHP mana yang akan digunakan.

Ekstensi MySQL

Jika Anda ingin menggunakan MySQL, Anda harus menginstal ekstensi MySQL untuk PHP 7.x dan PHP 5.6.

sudo apt install php5.6-mysql -y
sudo apt install php7.4-mysql -y

Ekstensi/Perpustakaan Lainnya

Perhatikan bahwa jika Anda memerlukan perpustakaan atau ekstensi lain, mereka harus diinstal secara terpisah per versi PHP. Misalnya, jika Anda membutuhkan cURL, Anda harus menginstalnya untuk kedua versi.

sudo apt install php5.6-curl -y
sudo apt install php7.4-curl -y

3. Konfigurasi Apache

Kita perlu menambahkan beberapa modul Apache menggunakan a2enmod.

Pengguna Ubuntu 20.04 / 18.04.

sudo a2enmod actions alias proxy_fcgi fcgid

pengguna Ubuntu 16.04.

sudo a2enmod actions alias proxy_fcgi fastcgi

Anda mungkin perlu menambahkan dua layanan PHP ini ke konfigurasi Apache dengan:

sudo a2enconf php5.6-fpm
sudo a2enconf php7.4-fpm

Dan kemudian mulai dengan:

sudo service php5.6-fpm start
sudo service php7.4-fpm start

Mulai ulang Apache.

sudo systemctl restart apache2

Anda sekarang dapat menggunakan Host Virtual atau .htaccessuntuk menginstruksikan Apache versi PHP mana yang akan digunakan.

4. Metode Host Virtual

.conf Buka file Apache Anda  dan tambahkan <FilesMatch>arahan ke Virtual Host Anda.

Ini menginstruksikan Apache soket PHP mana yang akan digunakan.

Contoh PHP 5.6

/etc/Apache2/sites-available/000-default.conf

<VirtualHost *:80>
    <FilesMatch \.php> # Apache 2.4.10+ can proxy to unix socket 
        SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/" 
    </FilesMatch> 
</VirtualHost> 

Pastikan untuk me-restart Apache setelah melakukan perubahan pada Virtual Host.

sudo systemctl restart apache2

PHP 7.4 Contoh

/etc/Apache2/sites-available/000-default.conf

<VirtualHost *:80>
    <FilesMatch \.php> # Apache 2.4.10+ can proxy to unix socket 
        SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost/" 
    </FilesMatch> 
</VirtualHost>

Pastikan untuk me-restart Apache setelah melakukan perubahan pada Virtual Host.

sudo systemctl restart apache2

5. Metode htaccess

Anda juga dapat menambahkan  <FilesMatch> arahan ke .htaccessfile Anda. Sebelum Anda melakukannya, pastikan itu  AllowOverridediaktifkan, jika tidak Apache akan mengabaikan file .htaccess.

Buka file konfigurasi Apache.

sudo nano /etc/apache2/apache2.conf

Gulir ke bawah bagian berikut dan pastikan itu   AllowOverride  diatur ke  All.

/etc/apache2/apache2.conf

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

Simpan dan keluar (tekan  CTRL +  X, tekan  Y lalu tekan  ENTER)

Mulai ulang Apache.

sudo systemctl restart apache2

Sekarang Anda dapat menambahkan   <FilesMatch> arahan ke .htaccess

Contoh PHP 5.6

.htaccess

<FilesMatch \.php> 
    # Apache 2.4.10+ can proxy to unix socket 
    SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/" 
</FilesMatch>

PHP 7.4 Contoh

.htaccess

<FilesMatch \.php> 
    # Apache 2.4.10+ can proxy to unix socket 
    SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost/" 
</FilesMatch>


6. Uji PHP

Untuk melihat versi PHP Apache mana yang ditayangkan, buat file baru bernama  info.php di root dokumen web Anda.

Dalam contoh ini, kami akan membuat file baru di /var/www/html/

sudo nano /var/www/html/info.php

Masukkan kode PHP berikut.

/var/www/html/info.php

<?php
phpinfo(); 
?>

Simpan file dan keluar. (Tekan  CTRL +  X, tekan  Y lalu tekan  ENTER)

Sekarang kita dapat memuat file ini di browser dengan membuka  http://example.com/info.php atau http://your_ip/info.php

Di bawah ini kita dapat melihat halaman info PHP dengan versi PHP yang ditampilkan dengan jelas.

PHP INFO

Jangan lupa untuk menghapus  info.php karena mengandung informasi yang mungkin berguna bagi peretas.

sudo rm /var/www/html/info.php

Enjoy!!