Beberapa hari yang lalu saya mendapatkan notif update terbaru untuk aplikasi cloud storage yang saya gunakan yaitu Nextcloud. Saat tulisan ini dibuat update terbarunya adalah versi 27.0.0 dan didalam notifikasinya, Nextcloud menginformasikan bahwa nantinya Nextcloud versi 28 harus sudah menggunakan PHP 8.1 dimana saat ini saya baru menggunakan PHP 8.0 untuk aplikasi Nextcloud.
Agar cloud storage saya tetap mendapatkan update terbaru dan perbaikan security akhirnya saya memutuskan untuk melakukan upgrade versi yang digunakan oleh Nextcloud saya dari PHP 8.0 ke PHP 8.1. Sebenarnya tidak murni upgrade/replace melaikan melakukan install baru PHP versi 8.1 lalu kemudian jika memang tidak diperlukan lagi PHP versi 8.0 kita bisa melakukan uninstall.
Sebagai catatan saya menggunakan Nginx untuk webserver, jadi disini saya akan menginstall PHP-FPM. Sebelum memulai menginstall PHP versi 8.1 sebaiknya kita pastikan sistem operasi kita telah diupdate terlebih dahulu, jalankan perintah berikut.
$ sudo apt update -y && sudo apt upgrade -y
Untuk menjalankan PHP 8.1 di Ubuntu 22.04, kita perlu menambahkan Ondrej sury PPA ke dalam repository sistem kita. Ini adalah pengelola repositori PHP saat ini. Jalankan perintah.
$ sudo add-apt-repository ppa:ondrej/php
Kemudian lakukan update kembali.
$ sudo apt update -y
Install PHP-FPM 8.1
$ sudo apt install php8.1-fpm
Kemudian install beberapa PHP extention yang kita perlukan.
$ sudo apt install php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-redis php8.1-intl php8.1-gmp php8.1-bcmath -y
Setelah installasi selesai, coba kita cek apakah versi PHP default pada sistem operasi Ubuntu 22.04 kita sudah berubah dengan menjalankan perintah.
$ sudo php -v
Untuk Nextcloud milik saya, saya melakukan beberapa konfirugarsi pada file php.ini untuk versi PHP terbaru (saya samakan dengan php.ini versi PHP 8.0).
$ sudo nano /etc/php/8.1/fpm/php.ini
upload_max_filesize = 50M post_max_size = 50M memory_limit = 512M max_execution_time = 3600
Kemudian saya lanjutkan melakukan beberapa konfigurasi pada file www.conf
$ sudo nano /etc/php/8.1/fpm/pool.d/www.conf
Karena disini saya menggunakan Nginx dan username yang saya gunakan adalah www-data maka pastikan kembali konfigurasinya menggunakan username nginx.
user = www-data group = www-data listen.owner = www-data listen.group = www-data
Kemudian untuk menghindari error pada konfigurasi path environment PHP di Nextcloud, saya melakukan uncomment pada baris.
clear_env = no
Sampai disini semua konfigurasi sudah selesai selanjutnya kita coba restart servis dari PHP-FPM 8.1 dengan perintah.
$ sudo systemctl restart php8.1-fpm
Selanjutnya kita perlu mengkonfirasi file nginx untuk host (nextcloud) kita, jalankan perintah.
$ sudo nano /etc/nginx/sites-available/nextcloud.conf
Kemudian ganti PHP-FPM socket ke PHP versi 8.1 yang baru saja kita install.
upstream php-handler { server unix:/var/run/php/php8.1-fpm.sock; }
Kemudian simpan, pastikan konfigruasi nginx tidak ada error dengan perintah.
$ sudo nginx -t
Kemudian restart servis nginx.
$ sudo systemctl restart nginx
Jika Anda ingin menguninstall PHP 8.0 yang sebelumnya, maka tinggal jalankan saja perintah.
$ sudo apt purge php8.0* $ sudo apt autoclean $ sudo apt autoremove
Sampai disini semua perkerjaan kita sudah selesai, dan karena kasus saya disini adalah upgrade php 8.1 untuk aplikasi nextcloud maka hal terakhir yang perlu kita sesuaikan kembali adalah konfigurasi cron job nextcloud. Jalankan perintah.
$ sudo crontab -u www-data -e
Lakukan perubahan pada baris seperti berikut.
*/5 * * * * /usr/bin/php8.1 -f /var/www/nextcloud/cron.php
Semoga bermanfaat…