Cara Upgrade PHP Version pada Apache dan Nginx

Cara Upgrade PHP Version pada Apache dan Nginx

Naikin atau upgrade PHP Version tuh penting banget buat para Web developer. Tapi masalahnya, repositori paket Linux pada distro-distro Linux banyak yang belum nyediain PHP 8 secara default.

Jadinya, kalo mau upgrade PHP Version, ente harus nunggu berbulan-bulan bahkan bertahun-tahun sebelum versi baru ditambahin otomatis. Kecuali kalo ente pake distro Linux yang lain. Makanya, penting banget buat pastiin bahwa sistem operasi dan web server selalu pake versi PHP terbaru.

Upgrade PHP Version Terbaru

Kalo pengen nyobain upgrade PHP Version 8, khususnya di Linux Ubuntu 20.04 LTS, ente bisa install dengan ngikutin langkah-langkah berikut ini.

Langkah 1: Tambahkan Repositori PPA

Di Ubuntu 20.04, upgrade PHP Version 7.4 yang di-install secara default. Nah, kalo repositori-nya ga ada paket PHP8, ya pasti gagal kalo coba install PHP8.

Salah satu solusinya adalah pake PPA. Ada PPA yang namanya Ondrej PPA yang menyediain paket PHP8. Buat nambahin Ondrej PPA ke daftar repositoriente, jalanin perintah ini:

sudo add-apt-repository ppa:ondrej/php

Nanti setelah ente tekan Enter, Ondrej PPA bakal ditambahin. Tunggu sampe proses selesai ya.

Setelah itu, ente bisa lanjut ke:

Langkah 2: Install PHP 8

Sekarang, ente bisa ketik perintah buat install dan upgrade PHP Version-nya:

sudo apt install php8.0 -y

Kalo ga bisa, coba ini juga:

sudo apt install php8.1 -y

Di Fedora versi 36 ke atas, PHP udah jalan di versi 8. Jadi bisa diinstall dengan perintah:

sudo dnf install php -y

Terakhir, masukin perintah berikut buat cek versi PHP:

php -v

Langkah terakhir adalah nge-set PHP-nya biar web server bisa dipake.

Langkah 3: Mengkonfigurasi Web Server

Ada dua web server yang sering dipake buat jalanin PHP, yaitu Apache, Nginx, sama Openlitespeed. Pilih salah satu aja.

Apache

yang diinstall, khususnya libapache2-mod-php8.0.

Paket ini berisi modul PHP Apache. Kalo paket ini belom ke-install, bisa diinstall pake perintah berikut:

sudo apt install libapache2-mod-php8.0

Kalo pengen pake web server Apache, harus install paket ini dulu. Oke, selanjutnya tinggal install web server Apache. Ketik perintah berikut:

sudo apt install apache2

Coba gunain perintah berikut buat ngecek status layanan apache2 setelah install:

sudo service apache2 status

Kalo layanannya udah aktif dan berjalan, berarti server web-nya udah siap. Sekarang cobain buka web browser trus akses ke http://localhost/.

Kalo berhasil, berarti Apache jalan dengan baik sebagai server web. Tinggal nge-test fungsionalitas PHP 8 aja.

Upgrade PHP Version 7 ke PHP 8 Apache

Untuk upgrade PHP Version 7 ke 8 di Apache,  harus nonaktifin modul PHP 7 dulu, terus aktifin modul PHP 8. Perintahnya gini:

sudo a2dismod php7.4

Kalo ente pake PHP 7.2, ganti aja 7.4 jadi 7.2. Perintah ini bakal ngitung modul PHP 7.4.

Systemctl restart apache2

Yang terakhir, tinggal masukin perintah buat aktifin modul upgrade PHP Version 8:

sudo a2enmod php8.0

Jadi, modul PHP 8 udah berhasil diaktifin. Tinggal restart layanan Apache2 nya dengan perintah:

sudo service apache2 restart

Sekarang Apache udah jalan pake upgrade PHP Version 8. Kalo mau balik lagi ke versi 7, tinggal jalanin lagi perintah di atas tapi dibalikin urutannya:

sudo a2dismod php8.0 #diable modul php8
sudo a2enmod php7.4 #enable modul php7

Buat ngasih ijin nulis file di folder itu, update izin folder /var/www/html dengan perintah ini:

sudo chmod 777 /var/www/html -R

Selanjutnya, ente mau coba nambahin file PHP baru ke folder itu. Tau kan kalo Apache pakenya direktori /var/www/html buat simpen file web. Sekarang buat file baru namanya info.php di direktori /var/www/html/.

<?php
phpinfo();

Buka localhost/info.php di browser buat liat hasilnya.

Baca Juga: Configurasi Script Monitoring Nginx Web Server

Upgrade PHP Version pada Nginx

Nginx itu server web yang populer buat pengembangan dan produksi. Kalo sekarang ente pake Apache, sebenernya ga perlu pake Nginx.

Tapi kalo ente pengen nyobain, silakan aja. Tapi pertama-tama, harus install Nginx dulu. Cek versi Nginx dengan perintah berikut:

sudo apt install nginx -y
nginx -v

Coba perintah berikut buat cek status layanan Nginx:

sudo service nginx status

Ini nunjukin kalo server web Nginx udah jalan. Bisa dicoba buka dari web browser pake localhost.

Tapi, PHP masih ga bisa dieksekusi di Nginx. Nginx cuma bisa jalanin file HTML aja. Ini karena FastCGI belom diimplementasikan. Sekarang mau install FastCGI. Jalanin perintah berikut:

sudo apt install php8.0-fpm

Tunggu sampe prosesnya selesai. Selanjutnya, coba perintah berikut buat cek status layanan php8.0-fpm:

sudo service php8.0-fpm status

Oke, sekarang layanan PHP FastCGI dan Nginx udah berjalan. Langkah terakhir, buat ngonfigurasi Nginx. Pertama-tama, buka file /etc/nginx/sites-available/default dengan hak akses root.

Ubah bagian yang meneruskan skrip PHP ke server FastCGI jadi kayak gini:

server {

# ... some other code

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
}
}

Versi lengkapnya ada di bawah ini:

##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# https://www.nginx.com/resources/wiki/start/
# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
# https://wiki.debian.org/Nginx/DirectoryStructure
#
# In most cases, administrators will remove this file from sites-enabled/ and
# leave it as reference inside of sites-available where it will continue to be
# updated by the nginx packaging team.
#
# This file will automatically load configuration files provided by other
# applications, such as Drupal or WordPress. These applications will be made
# available underneath a path with that package name, such as /drupal8.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

# Default server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;

root /var/www/html;

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

server_name _;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
#server {
# listen 80;
# listen [::]:80;
#
# server_name example.com;
#
# root /var/www/example.com;
# index index.html;
#
# location / {
# try_files $uri $uri/ =404;
# }
#}

Upgrade PHP Version 8.0-fpm kalo ente mau pake PHP 7. Ganti dari `php8.0-fpm.sock` jadi `php7.4-fpm.sock`. Terakhir, coba perintah berikut buat ngetes konfigurasinya:

sudo nginx -t

Terakhir, jalanin perintah berikut buat restart layanan nginx:

sudo service nginx restart

Buat file baru namanya `info.php` dan masukin kode berikut di dalamnya di subdirektori `/var/www/html`:

<?php
phpinfo();

Langkah selanjutnya, buka browser dan ketik `localhost/info.php`. Sekarang PHP 8 udah jalan pake FastCGI dan server web Nginx.

Baca Juga: Cara Meningkatkan Nginx Performance Tuning

Mode Debug Apache untuk PHP 8

Kalo pake Apache buat server pengembangan, pesan error PHP harus diaktifin. Kalo ga, server bakal nampilin pesan HTTP ERROR 500. Contoh pesannya kayak gini:

Contoh Debug Apache untuk PHP 8

Kalo cuma buat server produksi, error 500 bisa diterima. Tapi buat pengembangan, masalahnya ga bisa akses pesan error programnya.

Jadi, buat ngatasin masalah itu, harus aktifin mode debug PHP 8. Silakan edit file `/etc/php/apache2/8.0/php.ini` sebagai root user dan buka file itu. Liat bagian ini:

error_reporting = E_ALL
display_errors = On
display_startup_errors = On
track_errors = On

Perhatiin upgrade PHP Version yang ente pake:

PHP 8.0 then change/etc/php/apache2/8.0/php.ini
PHP 8.1 then change in/etc/php/apache2/8.1/php.ini

Foto mengganti setting Directori Apache

Simpen, terus pake perintah berikut buat restart layanan apache2:

sudo service apache2 restart

Coba buka lagi script atau halaman PHP yang tadi error. Hasilnya bakal keliatan gitu:

Foto Local Host Fatal Error

Jadi, buat server pengembangan, mungkin udah pake Apache2.

PHP 8 dan MySQL

Ekstensi php-mysql harus diinstall kalo PHP 8 dan MySQL mau dipake barengan. Kalo enggak, bakal keluar error kayak gini:

Local Host Fatal Error

Error ini nunjukin kalo ekstensi MySQL ga ada, jadi PHP ga nemu fungsi `mysqli_connect()`. Perintah berikut ini bakal menginstall ekstensi MySQL untuk PHP 8:

sudo apt install php8.0-mysql

For upgrade PHP Version 8.1:

sudo apt install php8.1-mysql

Jangan lupa pake perintah berikut buat restart layanan Apache2 setelah itu:

sudo service apache2 restart

Hasilnya, upgrade PHP Version 8 sekarang udah support MySQL.

Phpmyadmin untuk PHP 8

Kalo pake PHP 8 buat jalanin Phpmyadmin, bakal keluar error kayak gini:

Fatal error 253

Error ini disebabkan oleh beberapa ekstensi yang ga ada, kayak `php-intl`, `php-mbstring`, `php-zip`, dll. Silakan jalankan perintah berikut buat install semua ekstensi yang diperlukan:

PHP 8.0:

sudo apt install php8.0-cli php8.0-common php8.0-curl php8.0-gd php8.0-intl php8.0-mbstring php8.0-mysql php8.0-opcache php8.0-readline php8.0-xml php8.0-xsl php8.0-zip php8.0-bz2

PHP 8.1:

sudo apt install php8.1-cli php8.1-common php8.1-curl php8.1-gd php8.1-intl php8.1-mbstring php8.1-mysql php8.1-opcache php8.1-readline php8.1-xml php8.1-xsl php8.1-zip php8.1-bz2

Jangan lupa pake perintah berikut buat restart layanan Apache2 setelah itu:

sudo service apache2 restart

Oleh karena itu, sekarang PHP 8 udah bisa buka Phpmyadmin.

Foto ampilan PHPmyAdmin

Baca Juga: Panduan Lengkap Install Nginx Ubuntu 20.04

Kesimpulan

Dalam artikel ini, belajar gimana caranya upgrade PHP version 7 ke 8. Selain itu, pilih aja salah satu dari web server Apache atau Nginx buat pengembangan. Ane pribadi lebih suka Apache, tapi lebih sering pake Nginx. Kalo mau konfigurasi Phpmyadmin yang lebih detail, bisa langsung liat dokumentasi di situs resminya.

Nah, segitu aja pembahasannya tentang upgrade PHP Version di Apache dan Nginx Web server. Semoga bisa bermanfaat ya. Kalo masih ada pertanyaan atau saran, jangan ragu buat tambahin di kolom komentar.

Baca itu Gak Ada Ruginya

BACA JUGA INI