Issue Cannot redeclare file_get_html() simple_html_dom.php, Plugin WP Bentrok

Kali ini saya mau update masalah pada plugin wordpress yang terjadi disalah satu website saya, ketika saya mengaktifkan salah satu plugin yang menggunakan simple_html_dom.php, website saya menjadi error, tampilan errornya kurang lebih seperti ini:

Cannot redeclare file_get_html() (previously declared in /home/hoe/public_html//wp-content/plugins/xxxxxpluginA/lib/simple_html_dom.php:36) in /home/hoe/public_html//wp-content/plugins/xxxxxpluginB/admin/classes/simple_html_dom.php on line 80

Kalau dilihat dari errornya, ada konflik yang terjadi ketika saya mengaktifkan plugin A, setelah saya trial error dan mencoba menon-aktifkan plugin xxxxxpluginB seperti yang disebut di error di atas. Ternyata ketika plugin xxxxxpluginA saya aktifkan kembali, tidak muncul error tersebut, kesimpulannya berarti jelas bahwa ada konflik dengan 2 plugin tersebut.

Setelah browsing sana sini ternyata konflik tersebut disebabkan adanya pemanggilan file simple_html_dom.php yang dobel, plugin A sudah lebih dahulu menggunakan file tersebut.

Saya ga ngerti fungsi file tersebut untuk apa hehe yang jelas banyak di pake di plugin-plugin sekarang. Alternatifnya perlu sedikit modifikasi cara pemanggilan file simple_html_dom.php pada plugin xxxxxpluginB (plugin kedua).

Bingung juga nyari file yang mengandung komeng pemanggilan file simple_html_dom.php di plugin B, banyak banget file soalnya, masa harus buka satu per satu. Akhirnya nemu software FileSeek yang berfungsi untuk searching komeng.

Langkah pertama, saya download plugin B ke komputer saya terlebih dahulu.

Pastinya untuk memanggil file simple_html_dom.php mengandung ‘admin/classes/simple_html_dom.php‘ jadi saya searching dengan query ‘admin/classes/simple_html_dom.php‘ tanpa tanda kutip menggunakan FileSeek.

Fileseek-query

Ketemu, file simple_html_dom.php di panggil di file wso-members.php seperti gambar di atas 😀 yesss bahkan kita bisa lihat penulisannya.

Selanjutnya tinggal saya buka file wso-members.php dan search ‘admin/classes/simple_html_dom.php‘ tanpa tanda kutip, dan ketemu baris command di bawah ini:

include_once (‘admin/classes/simple_html_dom.php’); —-> ini sumber masalahnya

Jadi, karena file tersebut dipanggil kembali dengan perintah di atas, terjadi konflik karena perintah di atas sudah (memanggil file simple_html_dom.php) juga dilakukan di plugin B.

Langsung saja baris perintah diatas di hapus dan ganti dengan baris perintah berikut:

if ( ! class_exists( ‘simple_html_dom_node’ ) ) {
   require_once(‘admin/classes/simple_html_dom.php’);
}

Save….

Coba kembali aktifkan plugin, dan sudah tidak bentrok lagi….

Leave a Comment