Saya biasanya kalau mau memperbaharui WordPress selalu menunggu versi minor .1 atau lebih. Soalnya, suka ada perilaku tak terduga kalau versi mayor baru terbit. Kali ini, WordPress 4.9.1 sudah terbit.
Menurut situsnya, WordPress merekomendasikan penggunaan PHP 7.2. Saya sendiri baru tahu kalau sudah ada PHP 7.2. Pantas saja WordPress berhenti di versi 4.8.4 pada beberapa peladen.
Saatnya memasang PHP 7.2!
Pemasangan PHP 7.2
Saya pernah membahas tentang PHP 7.1+ di artikel terdahulu. Jadi, ini sekedar mengulang saja.
Aktifkan modul APT untuk mengakses repo berbasis HTTPS dan beberapa paket lainnya.
sudo apt-get install apt-transport-https lsb-release ca-certificates
Aktifkan repo Suri.
wget -O- https://packages.sury.org/php/apt.gpg | sudo apt-key add - echo "deb https://packages.sury.org/php/ jessie main" | sudo tee -a /etc/apt/sources.list.d/php-sury.list sudo apt update
Lalu, pasang PHP 7.2 untuk menggantikan PHP 5.
sudo apt install php7.2-fpm php7.2-curl php7.2-gd php7.2-imagick php7.2-json php7.2-mysql php7.2-readline php-redis php7.2-xml php7.2-mbstring php7.2-zip php7.2-mysql
Kalau hanya sekedar php-fpm, yang terpasang bakal versi 7.1. Harus secara eksplisit disebutkan versi 7.2.
Selanjutnya, menyalin konfigurasi fpm dari /etc/php5/fpm/pool.d ke /etc/php/7.2/fpm/pool.d untuk setiap pool.
Saya sejauh ini tidak ada masalah.
Fungsi Yang Mulai Ditinggalkan
Nampaknya PHP7 dan terbaru hendak dibuat menjadi domain yang ketat (strict typecast). Mungkin pengembang PHP ingin menjadikan PHP sebagai bahasa yang lebih aman. Kalau saya melihat log, biasanya akan diprotes bentuk akses senarai (array). Saya mendapati fungsi count() terutama yang paling sering dicatat.
count(): Parameter must be an array or an object that implements Countable in ...
Ada orang-orang yang memutuskan untuk kembali ke PHP 7.1. Tapi saya tidak! Agar sesuai dengan PHP7.2 dan terbaru, misalnya ada variabel:
count($elements[‘#value’])
count ( $elements )
Diubah dengan menambahkan uji tipe senarai :
is_array ( $elements ) && count ( $elements )
Atau, saat diubah menjadi tipe senarai:
$elements = ( array ) $source->getElements();
Penyebab ini semua kalau saya lihat di kode sumber WordPress adalah biasanya karena penggunaan variabel global.
Untung saja, untuk yang lain pun WordPress dan plugin-nya sudah cukup bersahabat.