Cara Menjalankan Beberapa Versi PHP dengan Apache di Ubuntu 20.04 / 18.04 / 16.04
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 y
dan 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 .htaccess
untuk 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 .htaccess
file Anda. Sebelum Anda melakukannya, pastikan itu AllowOverride
diaktifkan, 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.
Jangan lupa untuk menghapus info.php
karena mengandung informasi yang mungkin berguna bagi peretas.
sudo rm /var/www/html/info.php
Enjoy!!