Codeigniter 4 Blank Page di Live Server atau Hosting
Kemarin saya baru saja upload website punya client yang dibangun menggunakan framework Codeigniter 4. Untuk servernya menggunakan cloud VPS dan bukan shared hosting. Setelah source code di upload dan melakukan konfigurasi dasar seperti koneksi database, base url dan lain-lain, alhasil saya menemukan masalah blank page saat mengakses URL website.
Sayangnya tidak ada pesan error yang ditampilkan meskipun sudah saya ubah environment-nya ke development. Hal yang sama juga pada file log codeigniter yang berada di folder writable. Tidak ditemukan pesan error sama sekali disana. Untuk server sendiri saya sudah memastikan sudah memenuhi system requirement codeigniter 4.
Saya fikir permasalahannya ada di source code saya. Tetapi ketika mencoba untuk instal codeigniter 4 menggunakan fresh instal dari website resmi, masalah tetap terjadi yaitu blank page saat tampilan awal dengan tidak menampilkan pesan error sama sekali. Saya menduga ada masalah dengan server VPS saya.
Untuk memastikan hasil hipotesa saya benar, saya mencoba untuk instal di share hosting yang saya punya dengan source code yang sama persis. Hasilnya website berjalan dengan normal dan tidak lagi blank page.
Selanjutkan saya kembali lagi ke server VPS yang bermasalah tadi. Saya coba untuk melakukan self troubleshooting dengan membaca thread di beberapa forum komunitas codeigniter. Ternyata yang mengalami masalah ini tidak hanya saya saja. Sebelumnya sudah ada menanyakan masalah ini di forum CI.
Oke gan, langsung saja dibawah saya jabarkan hasil dari pengamatan saya di beberapa thread forum untuk masalah blank page codeigniter di live server. Setidaknya saya menangkap 2 cara untuk menyelesaikan kasus ini.
1. Disable zlib.output_compression extention di PHP
Ekstensi zlib menawarkan opsi untuk mengompres halaman Anda secara transparan saat bepergian, jika browser yang meminta mendukungnya. Oleh karena itu ada tiga pilihan pada file konfigurasi php.ini . Untuk menonaktifkan ekstensi ini, buka file php.ini kemudian cari baris zlib.output_compression , setting menjadi Off sehingga akan menjadi zlib.output_compression=Off . Setelah itu restart service apache .
Saya berhasil menggunakan cara pertama, dan saat ini website sudah kembali berjalan normal. Namun jika anda tidak mau ribet dengan mengubah pengaturan file PHP, cara yang kedua bisa menjadi pilihan. Cara kedua hanya merubah beberapa kode bawaan codeigniter 4.
2. Edit file Events.php di app/Config
Buka file app/Config/Events.php , hapus pada baris 25 sampai 32.
while (\ob_get_level() > 0) { \ob_end_flush(); } \ob_start(function ($buffer) { return $buffer; });
3. Edit file Events.php di system/Events
$result = static::$simulate === false ? call_user_func($listener, ...$arguments) : true;Menjadi :
if($eventName == 'pre_system' && empty($arguments)){ $result = true; }else{ $result = static::$simulate === false ? call_user_func($listener, ...$arguments) : true; }
Saat menampilkan halaman kosong, saya pikir itu ada hubungannya dengan output_compression pada php, jika disetel ke Aktif, saya mendapatkan header yang sudah mengirim kesalahan dan halaman kosong . jika diatur ke Off, semua berfungsi dengan baik.