Beberapa waktu yang lalu saya mengupdate webmail (squirrlemail), agar dapat mengetahui quota email untuk masing-masing user. Untuk melakukan hal tersebut, terlebih dahulu kita harus menginstall quota, quotatool di sistem GNU/Linux-nya ( Bagi pecinta GNU/Linux Debian, anda dapat mengikuti tutorialnya di sini ).
Setelah itu, saya install plugins squirrelmail untuk check quota. Namun untuk menginstall tersebut saya terpaksa mengupgrade plugins compatibility squirrelmailnya, dari versi 2.0.6 menjadi 2.0.13. Setelah berhasil menginstall plugins check quota, ternyata ada problem : plugin change_password nya nggak bisa running. Saat saya buka Options > Change of Password, tampilannya blank.
Setelah di php.ini aku seting :
display_errors = On
Muncul error :
Fatal error: Call to undefined function php_self() in /var/www/..... /plugins/compatibility/includes/1.5.0/global.php on line 25
Akhirnya saya edit pada baris tersebut :
#Sebelum#$PHP_SELF = php_self();#Sesudah/menjadi$PHP_SELF = $_SERVER["PHP_SELF"];if (!compatibility_check_sm_version(1, 4, 6)) { $dirs = array('|src/.*|', '|plugins/.*|', '|functions/.*|'); $repl = array('', '', ''); $base_uri = preg_replace($dirs, $repl, $PHP_SELF);} else { $base_uri = sqm_baseuri();}
Setelah error tersebut beres muncul error berikut :
Fatal error: Cannot redeclare sq_bindtextdomain() (previously declared in /var/www/......../plugins/compatibility/includes/1.5.1/global.php:236) in /var/www/...../functions/i18n.php on line 50
Solusinya cukup mudah, pada file dan baris yang ditunjukan diantara fungsi tersebut di deklarasikan, tuliskan logika bahwa fungsi akan di deklarasikan jika belum ada fungsi tersebut sebelumnya.
if ( !function_exists('sq_bindtextdomain')) { function sq_bindtextdomain($domain,$dir) { ...... isi fungsi sq_bindtextdomain ...... }}
Setelah error tersebut beres, ternyata ada error serupa berturut-turut, sbb:
Fatal error: Cannot redeclare sqauth_read_password() (previously declared in /var/www/...... /plugins/compatibility/includes/1.5.1/global.php:189) in /var/www/......./functions/auth.php on line 123Fatal error: Cannot redeclare sqauth_save_password() (previously declared in /var/www/....../plugins/compatibility/includes/1.5.1/global.php:207) in /var/www/....../functions/auth.php on line 154Fatal error: Cannot redeclare get_smtp_user() (previously declared in /var/www/....../plugins/compatibility/includes/1.4.11/global.php:6) in /var/www/....../functions/auth.php on line 334
Solusinya sama, yaitu pada file dan baris yang ditunjukan diantara fungsi tersebut di deklarasikan, tuliskan logika bahwa fungsi akan di deklarasikan jika belum ada fungsi tersebut sebelumnya.
if ( !function_exists('nama_fungsi')) { function nama_fungsi($variabel) { ...... isi fungsi ...... }}
Dan, Alhamdulillah plugins change_password-nya bisa berjalan lagi.