Siang ini saya melakukan update ports-ports FreeBSD 7.2-stable di 3 server yang dijadikan sebagai server cacti dan mrtg untuk customer. Setelah selesai makan, bermaksud mau melihat buku terbaru, tiba-tiba mendapat telepon dari NOC, bahwa salah satu server cacti untuk memonitor lokasi-lokasi vpn mengalami masalah dengan cacti, dimana graph tidak muncul. Troubleshoot pertama, adalah dengan melihat log cacti, dan ditemukan bahwa ada module yang tidak berhasil load, yaitu:
Unable to load dynamic library ‘/usr/local/lib/php/20060613/mysqli.so’ – /usr/local/lib/php/20060613/mysqli.so: Undefined symbol “spl_ce_RuntimeException” in Unknown on line 0
Saya kemudian remote ke server, dan melakukan debug manual terhadap php, dan hasilnya adalah sama
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/local/lib/php/20060613/mysqli.so’ – /usr/local/lib/php/20060613/mysqli.so: Undefined symbol “spl_ce_RuntimeException” in Unknown on line 0
PHP 5.2.11 with Suhosin-Patch 0.9.7 (cli) (built: Nov 20 2009 13:06:31)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
Awalnya saya kuatir, jika ada module yang tidak terinstall secara sempurna, untuk itu, saya melakukan crosscheck dan ternyata module spl yang di”ribut”kan oleh mysql terinstall dengan baik. Akhirnya solusi ketemu, setelah saya buka file extensions.ini dan menempatkan spl.so sebelum mysqli.so dan problem solved.
Tips: jika suatu saat Anda melakukan upgrade terhadap Apache, mysql, dan php mungkin script berikut akan berguna bagi Anda, setelah melakukan upgrade ketiga software diatas:
#!/bin/sh
cp /usr/local/etc/php/extensions.ini{,.old}
cd /usr/local/lib/php/20060613
lorder *.so | tsort | tail -r | sed -e ‘s/^/extension=/’ > /usr/local/etc/php/extensions.ini
Semoga bermanfaat.