Menjalankan Multi PHP di Ubuntu 16.04 dan 18.04

Meskipun saat ini PHP sudah memasuki versi 7, namun terkadang adakalanya kita masih membutuhkan versi sebelum, guna untuk menjalankan beberapa aplikasi yang memang belum/tidak mendukung PHPv7.x. Seperti kasus di kantor saya, masih menggunakan Magento 1, yang mana ia tidak mendukung PHPv7.x. Saat ini saya menggunakan Ubuntu 18.04, dan pada repositori resmi hanya tersedia PHPv7.2, mau tidak-mau saya harus memasang php5.6 agar Magento dapat berjalan dengan sebagai mana mestinya. Pada kesempatan kali ini, saya ingin berbagai mengenai cara pemasang PHPv5.6 dan 7.x dengan Apache dan php-fpm yang memungkinkan dapat menjalankan keduanya sekaligus.

Langsung saja, pertama-tama kita pasang dahulu apache:

$ sudo apt install apache2

Kemudian yang kedua, kita pasang php5.6 di Ubuntu 16.04 dan 18.04. Secara asali di Ubuntu tersebut tidak disediakan php5.6 di repositori resmi. Oleh karena itu kita perlu masukan repositori dari luar (ppa), yakni:

$ sudo add-apt-repository -y ppa:ondrej/php
$ sudo apt update

Lalu tinggal kita pasang saja php5.6 nya secara lengkap dengan perintah di bawah ini:

$ sudo apt install php5.6 php5.6-enchant php5.6-mbstring php5.6-snmp php5.6-bcmath php5.6-fpm php5.6-mysql php5.6-soap php5.6-bz2 php5.6-gd php5.6-odbc php5.6-sqlite3 php5.6-cgi php5.6-gmp php5.6-opcache php5.6-sybase php5.6-cli php5.6-imap php5.6-pgsql php5.6-tidy php5.6-common php5.6-interbase php5.6-phpdbg php5.6-xml php5.6-curl php5.6-intl php5.6-pspell php5.6-xmlrpc php5.6-dba php5.6-json php5.6-readline php5.6-xsl php5.6-ldap php5.6-recode php5.6-zip

Setelah itu, kita pasang php7 nya.

Ubuntu 16.04

$ sudo apt install php7.0 php7.0-enchant php7.0-mbstring php7.0-snmp php7.0-bcmath php7.0-fpm php7.0-mysql php7.0-soap php7.0-bz2 php7.0-gd php7.0-odbc php7.0-sqlite3 php7.0-cgi php7.0-gmp php7.0-opcache php7.0-sybase php7.0-cli php7.0-imap php7.0-pgsql php7.0-tidy php7.0-common php7.0-interbase php7.0-phpdbg php7.0-xml php7.0-curl php7.0-intl php7.0-pspell php7.0-xmlrpc php7.0-dba php7.0-json php7.0-readline php7.0-xsl php7.0-ldap php7.0-recode php7.0-zip

Ubuntu 18.04

$ sudo apt install php7.2 php7.2-enchant php7.2-mbstring php7.2-snmp php7.2-bcmath php7.2-fpm php7.2-mysql php7.2-soap php7.2-bz2 php7.2-gd php7.2-odbc php7.2-sqlite3 php7.2-cgi php7.2-gmp php7.2-opcache php7.2-sybase php7.2-cli php7.2-imap php7.2-pgsql php7.2-tidy php7.2-common php7.2-interbase php7.2-phpdbg php7.2-xml php7.2-curl php7.2-intl php7.2-pspell php7.2-xmlrpc php7.2-dba php7.2-json php7.2-readline php7.2-xsl php7.2-ldap php7.2-recode php7.2-zip

Setelah selesai, sunting php-fpm. Sebelum menyunting, pastikan kita menyetopnya terlebih dahulu:

$ sudo systemctl stop php5.6-fpm.service php7.2-fpm.service

Khusus pengguna Ubuntu 16.04 ganti php7.2-fpm menjadi php7.0-fpm.  Lalu baru kita sunting php-fpm.

$ vim /etc/php/5.6/fpm/pool.d/www.conf

[www]

user = ali
group = ali

listen = /run/php/php5.6-fpm.sock

Ganti /etc/php/5.6/ dengan /etc/php/7.2 atau 7.0 sesuai versi php-nya.

INGAT Untuk menutup vim dengan sudo, perintahnya adalah sebagai berikut:
!w sudo tee % > /dev/null

Buat virtualhost khusus untuk php5.6 misalnya dengan nama https://localhost.php5, sedangan php7 kita gunakan default-nya yaknihttps://localhost.

$ vim /etc/hosts

Jadikan seperti berikut:

...

127.0.0.1 localhost.php5

...

Aktifkan fastcgi:

$ sudo a2enmod actions fastcgi alias proxy_fcgi

Sunting virtualhost default dengan mengikuti perintah berikut:

$ vim /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
    ServerAdmin admin@situsali.com
    DocumentRoot /home/ali/Web

    <Directory /home/ali/Web/>
        DirectoryIndex index.php
        Options +FollowSymlinks
        AllowOverride All
        Require all granted
    </Directory>

    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost/"
    </FilesMatch>

    ErrorLog /home/ali/Web/logs/php7.2-error.log
    CustomLog /home/ali/Web/logs/php7.2-access.log combined
</VirtualHost>

Kemudian buat virtualhost khusus untuk php5.6.

$ cd /etc/apache2/sites-available/
$ sudo cp 000-default.conf php56.conf

Lalu isikan kodenya seperti berikut:

<VirtualHost *:80>
    ServerAdmin admin@situsali.com
    DocumentRoot /home/ali/Web
    ServerName localhost.php5

    <Directory /home/ali/Web/>
        DirectoryIndex index.php
        Options +FollowSymlinks
        AllowOverride All
        Require all granted
    </Directory>

    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost/"
    </FilesMatch>

    ErrorLog /home/ali/Web/logs/php5.6-error.log
    CustomLog /home/ali/Web/logs/php5.6-access.log combined
</VirtualHost>

Aktifkan virtualhost php56 dengan perintah a2ensite:

$ sudo a2ensite php56

Selanjutnya tes hasil konfigurasi kita, apakah sudah benar atau belum:

$ sudo apachectl configtest

Jika tidak ada yang galat (error), langsung saja kita restart apache:

$ sudo systemctl apache2 restart

Sekarang tinggal kita coba buka di peramban.

Jika sudah seperti gambar di atas artinya kita sudah sukses. Semoga bermanfaat