Cara Install PHP 8 di Linux (Upgrade PHP 7 ke PHP 8)
PHP 8 sudah rilis, yay!
Tapi..
PHP 8 belum tersedia secara default di repository paket Linux. Biasanya akan menunggu beberapa bulan bahkan tahun agar bisa ditambahkan secara default. Kecuali kita menggunakan Linux yang rolling release.
Nah, buat kamu yang tidak sabar ingin mencoba PHP 8.. khususnya di Linux Ubuntu 20.04 LTS, kamu bisa ikuti tutorial ini untuk menginstalnya.
Mari kita pelajari!
Step 1 - Tambahkan PPA Repository
Saat ini versi default PHP di ubuntu 20.04 adalah PHP 7.4. Jika kita mencoba menginstal PHP8, maka tidak akan bisa, karena di repository tidak ada paket PHP8.
Solusinya kita bisa menggunakan PPA. Salah satu PPA yang menyediakan paket PHP8 adalah Ondrej PPA.
Silakan ketik perintah berikut untuk Ondrej PPA di list repository-mu.
sudo add-apt-repository ppa:ondrej/php
Jika muncul seperti ini:
Tekan Enter, maka PPA Ondrej akan ditambahkan. Tunggulah sampai prosesnya selesai.
Setelah itu baru kita bisa lanjut ke:
Step 2 - Instalasi PHP 8
Nah untuk menginstal PHP, kita bisa ketik perintah:
sudo apt install php8.0
Jika tidak bisa, coba:
sudo apt install php8.1
Untuk pengguna Fedora 36 ke atas, PHP sudah secara default pakai versi 8. Jadi bisa diinstal dengan perintah berikut:
sudo dnf install php
Setelah itu, tunggulah sampai proses instalasi selesai:
Setelah itu, ketik perintah:
php -v
Untuk memeriksa versi PHP yang terinstal.
Pada komputer saya, php yang terinstall adalah versi 8.1.3
.
Berikutnya, kita tinggal konfigurasi PHP agar bisa digunakan di web server.
Step 3 - Konfigurasi Web Server
Ada dua web server yang sering digunakan untuk menjalankan PHP, yakni Apache dan Nginx.
Silakan pilih salah satu saja.
Menggunakan Apache
Jika kita perhatikan saat proses instalasi, ada paket tambahan yang terinstal.. yakni libapache2-mod-php8.0
.
Paket ini merupakan modul PHP untuk Apache.
Jika paket ini tidak terinstal, kita bisa menginstalnya dengan perintah:
sudo apt install libapache2-mod-php8.0
Paket ini wajib diinstal jika kita akan menggunakan Apache web server.
Oke, selanjutnya kita harus menginstal apache web server.
Silakan ketik perintah berikut:
sudo apt install apache2
Setelah terinstal coba cek status service apache2
dengan perintah:
sudo service apache2 status
Jika keluar seperti ini:
Artinya, service apache2
sedang berjalan dan webserver sudah bisa digunakan.
Sekarang coba buka web browser, lalu buka http://localhost/
.
Hasilnya:
Ini artinya web server apache sudah berjalan dengan benar. Tinggal kita test menjalankan PHP 8 dari sana.
Upgrade PHP 7 ke PHP 8 di Apache
Jika di komputermu sudah terinstal PHP 7 dan ingin menggantinya ke versi PHP 8, maka kita tinggal melakukan disable modul PHP7 lalu mengaktifkan modul PHP8.
Caranya ketik perintah berikut:
sudo a2dismod php7.4
Perintah ini akan melakukan disable modul PHP 7.4, jika kamu menggunakan PHP 7.2, silakan ganti 7.4 menjadi 7.2.
Setelah itu, kita tinggal enable modul PHP 8 dengan perintah:
sudo a2enmod php8.0
Jika keluar seperti ini:
Artinya, modul PHP 8 berhasil diaktifkan.
Berikutnya kita tinggal restart service apache2 dengan perintah berikut:
sudo service apache2 restart
Nah, sekarang Apache sudah menggunakan PHP versi 8. Jika kamu ingin kembalikan ke versi 7, tinggal jalankan lagi perintah seperti di atas.
sudo a2dismod php8.0 #diable modul php8
sudo a2enmod php7.4 #enable modul php7
Oke, sekarang mari kita coba..
Sebelumnya, silakan ubah hak akses folder /var/www/html
agar kita bisa menulis file di sana.
Gunakan perintah berikut:
sudo chmod 777 /var/www/html -R
Setelah itu, kita akan coba membuat file PHP baru di dalam folder tersebut.
Oh iya, folder /var/www/html
merupakan folder yang digunakan oleh Apache untuk menyimpan file web.
Ok, sekarang buatlah file baru di dalam folder /var/www/html/
dengan nama info.php
dengan isi sebagai berikut:
<?php
phpinfo();
Setelah itu, buka alamat localhost/info.php
, maka hasilnya:
Mantap 👍 PHP 8 dan Apache sudah terinstal dengan benar.
Menggunakan Nginx
Nginx adalah salah satu web server yang sering digunakan, baik untuk development dan production.
Jika kamu sudah menggunakan Apache, sebenarnya tidak perlu lagi menggunakan Nginx.
Tapi, jika kamu ingin mencobanya..
Silakan lanjutkan.
Pertama, kita harus Install Nginx dengan perintah berikut:
sudo apt install nginx
Ketik y
lalu Enter jika keluar seperti ini:
Setelah itu, coba ketik perintah:
nginx -v
untuk memeriksa versi Nginx yang terinstal.
Pada komputer saya, terinstal Nginx versi 1.18.0.
Berikutnya coba cek status service Nginx dengan perintah:
sudo service nginx status
Jika keluar seperti ini:
Artinya status web server Nginx sedang aktif. Kita bisa mencobanya dengan membuka localhost
dari web browser.
Hasilnya akan seperti ini:
Tapi..
Saat ini nginx masih belum bisa menjalankan PHP. Dia hanya bisa menjalankan HTML saja.
Ini disebabkan karen kita belum menginstal FastCGI.
Oke, sekarang mari kita instal, ketik perintah ini:
sudo apt install php8.0-fpm
Tunggulah sampai prosesnya selesai.
Setelah itu, coba lihat status service php8.0-fpm
dengan perintah:
sudo service php8.0-fpm status
Hasilnya:
Oke, sekarang service Nginx dan PHP FastCGI sama-sama aktif.
Tinggal satu langkah lagi.
Kita harus konfigurasi Nginx agar dapat menggunakan service dari PHP FastCGI.
Caranya:
Buka file /etc/nginx/sites-available/default
dengan user root.
Kemudian ubah pada bagian pass PHP scripts to FastCGI server
seperti ini:
server {
# ... some other code
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
}
}
Versi full punya saya seperti 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;
# }
#}
Jika kamu ingin menggunakan PHP 7, maka tinggal ubah saja php8.0-fpm.sock
menjadi php7.4-fpm.sock
.
Berikutnya coba test konfigurasi dengan perintah:
sudo nginx -t
Jika tidak ada yang error..
Maka konfigurasinya sudah benar.
Terakhir, silakan restart service nginx dengan perintah berikut:
sudo service nginx restart
Selesai!
Sekarang kita bisa mencobanya.
Buatlah file baru di dalam folder /var/www/html
dengan nama info.php
dan isi filenya seperti ini:
<?php
phpinfo();
Setelah itu, buka web browser dan arahkan ke localhost/info.php
.
Maka hasilnya:
Mantap!
Sekarang PHP 8 sudah menggunakan web server Nginx dengan FastCGI.
PHP 8 Debug Mode di Apache
Jika kita ingin menggunakan Apache sebagai development Server, maka pesan error PHP harus diaktifkan.
Jika tidak, maka server akan merespon dengan HTTP ERROR 500.
Contohnya seperti ini:
Jika di server production, ini tidak masalah. Tapi jika kita pakai untuk development, maka ini akan jadi masalah. Soalnya kita tidak bisa tau pesan error dari programnya.
Nah untuk mengatasi ini, kita harus mengaktifkan debug mode untuk PHP 8.
Silakan buka file /etc/php/apache2/8.0/php.ini
sebagai user root, kemudian ubah isinya menjadi seperti ini:
error_reporting = E_ALL
display_errors = On
display_startup_errors = On
track_errors = On
Perhatikan versi PHP yang kamu gunakan:
- PHP 8.0 maka ubah
/etc/php/apache2/8.0/php.ini
- PHP 8.1 maka ubah di
/etc/php/apache2/8.1/php.ini
Oke, sekarang kita sudah mengubahnya.
Simpan, kemudian restart service apache2 dengan perintah:
sudo service apache2 restart
Setelah itu, coba buka kembali script atau halaman php yang error.
Maka hasilnya:
Dengan demikian, kita sudah bisa menggunakan webserver Apache2 untuk development server.
PHP 8 dan MySQL
Jika kita ingin menggunakan PHP 8 dengan MySQL, maka extension php-mysql
harus diinstal.
Jika tidak, maka akan terjadi error seperti ini:
Error ini artinya, PHP gagal menemukan fungsi mysqli_connect()
karena kita belum menginstal extension mysql.
Kita bisa menginstal extension MySQL untuk PHP 8 dengan perintah berikut:
sudo apt install php8.0-mysql
Atau untuk PHP 8.1:
sudo apt install php8.1-mysql
Setelah itu, jangan lupa untuk restart service apache2 dengan perintah:
sudo service apache2 restart
Dengan demikian kita sudah bisa menggunakan MySQL di PHP 8.
Phpmyadmin untuk PHP 8
Jika sebelumnya kamu menggunakan Phpmyadmin dan menggunakan PHP 8 untuk menjalankannya, maka akan terjadi error seperti ini:
Ini disebabkan karena ada beberapa extension yang belum terinstal, seperti php-intl
, php-mbstring
, php-zip
, dll.
Untuk menginstal semua extension yang dibutuhkan, silakan ketik perintah berikut:
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
Setelah itu, jangan lupa restart service apache2 dengan perintah:
sudo service apache2 restart
Maka sekarang kita akan bisa membuka PHPmyadmin dengan PHP 8.
Apa Selanjutnya?
Pada tutorial ini, kita sudah belajar cara menginstal PHP 8 dan melakukan upgrade dari PHP 7 ke PHP 8.
Untuk web server, silakan pilih salah satu. Saya lebih prefer Apache untuk development dan untuk production lebih sering menggunakan Nginx.
Selanjutnya kita bisa coba fitur terbaru di PHP 8 dan juga bisa coba belajar Laravel 9.
Jika ada kendala, silakan tanyakan di komentar. Jangan lupa lampirkan screenshot agar gampang dijawab.