Facebook Instagram GitHub LinkedIn
Operating System

Menginstall PHP 8 di Void Linux (Compile From Source)

PHP Linux

Saya saat ini sedang senang-senangnya menggunakan distro Void Linux. Berbeda dengan distro-distro mainstream lainnya, Void ini tidak menggunakan systemd sebagai init systemnya, tetapi menggunakan runit. Jadi perintah-perintah seperti systemctl tidak dapat digunakan di Void ini. Tetapi, runit ini sangat lebih cepat jika dibandingkan dengan systemd (setidaknya pada sistem operasi Void Linux ini).

Saat artikel ini saya buat, versi PHP di Void Linux ini masih berada di versi 7.4. Saya menemukan masalah ketika beberapa project yang saya buat menggunakan PHP 8, antara program yang saya buat harus di downgrade atau kita compile sendiri PHP 8 ini.

Melakukan Kompilasi PHP 8 di Void Linux

Informasi

Saat ini PHP versi 8 sudah tersedia di repository Void Linux, sehingga anda tidak perlu melakukan kompilasi secara manual lagi.

Kita akan melakukan kompilasi PHP dengan menyertakan beberapa ekstensi php yang biasa digunakan.

Persiapan Package sebagai Compiler

Sebelum melakukan kompilasi, kita harus menginstall terlebih dahulu beberapa package yang dibutuhkan untuk melakukan kompilasi:

sudo xbps-install -Su base-devel \
	libxml2-devel \
	libcurl-devel \
	libjpeg-turbo-devel \
	libpng-devel \
	libwebp-devel \
	libmysqlclient-devel \
	libzip-devel \
	openssl-devel \
	sqlite-devel \
	oniguruma-devel

Perintah itu akan menginstall beberapa package yang dibutuhkan untuk melakukan kompilasi pada program C dan C++ (php dibuat dengan bahasa pemrograman C) dan juga beberapa library yang dibutuhkan oleh beberapa ekstensi php yang akan kita embed saat kompilasi.

Mengunduh Source Code PHP

Silahkan unduh source code dari php 8.1. Selain dari halaman resminya, anda juga dapat mengclone repository resmi php di github. Saat artikel ini diterbitkan, versi terbaru berada di 8.1.0. Silahkan unduh salah satu berkas source codenya (saya mengunduh format .tar.gz). Lalu ekstrak berkas tersebut dengan aplikasi archive manager kesayangan anda, boleh menggunakan Ark, file-roller, atau apapun itu. Contoh hasil ekstraknya:

Tampilan dolphin dalam folder source code php

Melakukan Konfigurasi untuk Kompilasi PHP

Silahkan buka terminal, lalu masuk ke direktori tempat ekstrak source code php anda. Lalu jalankan perintah berikut ini:

./configure \
	--enable-mbstring \
	--with-curl \
	--with-openssl \
	--with-zip \
	--enable-gd \
	--with-jpeg \
	--with-webp \
	--with-mysqli \
	--enable-exif \
	--enable-ftp \
	--enable-bcmath \
	--with-bz2

Perintah tersebut untuk melakukan konfigurasi pada compiler, extension php apa saja yang akan di embed saat melakukan kompilasi. Jika anda ingin melihat konfigurasi ataupun extension apa saja yang dapat dikonfigurasi silahkan jalankan perintah berikut ini:

./configure --help

Misalnya ingin menambah ekstensi pdo mysql, silahkan tambah parameter --with-pdo-mysql.

Ketika melakukan konfigurasi kompilasi, anda mungkin akan menemukan masalah package tidak ada, silahkan cari package tersebut di Void Linux Packages lalu install development (package-devel) versionnya.

Ketika konfigurasi telah berhasil dilakukan akan menampilkan hasil kurang lebih seperti berikut ini:

Output konfigurasi kompilasi PHP

Melakukan Kompilasi

Untuk melakukan kompilasi PHP sama saja seperti program C lainnya:

make

Kompilasi akan berlangsung sedikit lama, tergantung kemampuan hardware anda. Silahkan ditunggu hingga selesai. Tips : tambahkan parameter -jN untuk mengubah core yang digunakan untuk kompilasi, ubah N dengan angka core CPU yang akan digunakan contoh : -j4.

Jika proses kompilasi berhasil kurang lebih akan menampilkan output seperti berikut ini:

Output hasil kompilasi PHP

Menginstall Hasil Kompilasi

Setelah kompilasi selesai kita harus menginstallnya, silahkan gunakan perintah berikut ini:

sudo make install

Perintah itu berguna untuk menginstall hasil kompilasi source code php tadi. Output perintah tersebut kurang lebih berikut ini:

Output hasil installasi PHP

Salin file php.ini yang disediakan di source code ke direktori installasi php kita:

sudo cp php.ini-development /usr/local/lib/php.ini

Untuk mengecek apakah php sudah terinstall silahkan cek versi phpnya:

php -v
Cek versi php melalui terminal

Selamat PHP Versi 8 telah berhasil diinstall di Void Linux anda!

Langkah Opsional

Menginstall dan Mengkonfigurasi Apache Web Server

Terkadang kita perlu web server untuk menjalankan program PHP kita, salah satunya adalah Apache. Cara menginstallnya di void:

sudo xbps-install apache

Symlink apache control kita ke service Void Linux agar dapat dikelola:

sudo ln -s /etc/sv/apache /var/service/apache

Karena kita menggunakan php hasil build kita sendiri, dimana saat ini repository void belum menyediakan libapache untuk php8. Silahkan unduh libphp8.1.so:

Silahkan unduh salah satu file diatas, sesuaikan dengan platform hardware anda. Saya hanya menyediakan versi 8.1 untuk 64bit dan arm. Jika anda membutuhkan versi lainnya silahkan cari sesuai dengan versi php 8 anda dan ekstrak hasilnya, cari library php berformat .so nya.

Copy libphp8.1.so hasil unduhan tadi ke folder /usr/libexec/httpd/:

sudo cp libphp8.1.so /usr/libexec/httpd/

Selanjutnya, edit file /etc/apache/httpd.conf dengan teks editor kesayangan anda, tambahkan baris:

LoadModule php_module /usr/libexec/httpd/libphp8.1.so

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

Lalu komen baris:

#LoadModule mpm_event_module /usr/libexec/httpd/mod_mpm_event.so

Uncoment baris:

LoadModule mpm_prefork_module /usr/libexec/httpd/mod_mpm_prefork.so

Langkah terakhir jalankan servicenya :

sudo sv start apache

Kesimpulan

Menginstall PHP 8 di Void Linux memang sedikit susah, kita harus melakukan kompilasi php dari source codenya sendiri. Hal ini tak lepas dari Void Linux yang memiliki komunitas yang masih sedikit. Saat ini sudah ada diskusi tentang Manajemen versi PHP di void linux yang patut kita tunggu.

Jika anda malas untuk melakukan kompilasi, sebaiknya gunakan saja versi yang sudah tersedia di Void Linux. Sekian artikel ini, Terima Kasih sudah membaca!