Cara Mengatasi Error “Cannot Modify Header Information”

11

Jika Anda pernah mengulik website berbasis PHP dan muncul pesan error dengan teks panjang seperti ini:Warning: Cannot modify header information – headers already sent by (output started at /home/username/public_html/index.php:12)

Error cannot modify header information ini mungkin terlihat sangat teknis, padahal penyebabnya bisa sesederhana seperti adanya spasi yang tidak seharusnya ada dalam baris kode.

Untuk lebih memahami penyebabnya, dan bagaimana cara mengatasinya, mari kita bedah tuntas di artikel ini.

Apa itu Error Cannot Modify Header Information?

Sederhananya, ketika sebuah browser (seperti Chrome, Firefox, atau Edge) meminta halaman dari server Anda, langkah pertama yang dilakukan oleh server adalah mengirimkan apa yang disebut Header HTTP.

Header HTTP ini adalah serangkaian informasi krusial yang harus diterima browser sebelum konten halaman yang sebenarnya (seperti teks, gambar, atau HTML) dikirim. Header berisi instruksi penting, seperti:

  1. Status HTTP: Apakah permintaan berhasil ($200 OK$), atau terjadi pengalihan (redirection $302$), atau malah error ($404 Not Found$).
  2. Tipe Konten (Content-Type): Memberi tahu browser jenis data apa yang akan dikirim (misalnya, text/html, application/json).
  3. Cookies dan Sesi (Session): Perintah untuk mengatur cookie baru atau melanjutkan sesi pengguna.
  4. Lokasi Pengalihan (Location): Perintah untuk mengalihkan browser ke URL lain.

Ketika error ini muncul, itu berarti di suatu tempat di dalam skrip PHP atau sistem website Anda (entah itu core WordPress, plugin, atau theme), ada output yang bocor dan terkirim ke browser sebelum perintah untuk memodifikasi Header (seperti memulai sesi atau melakukan redirect) dieksekusi.

Penyebab Error Cannot Modify Header Information

Berikut adalah beberapa penyebab paling umum dari kebocoran output yang memicu error “Cannot modify header information”:

Karakter di Luar Tag PHP

Ini adalah penyebab klasik dan paling sering terjadi. Dalam sebuah file PHP, setiap karakter di luar tag pembuka <?php dan tag penutup ?> dianggap sebagai output yang langsung dikirim ke browser.

Walaupun hanya satu spasi di baris 1, PHP sudah menganggapnya sebagai output. Begitu output ini terkirim, Header otomatis terkunci, dan jika ada fungsi seperti session_start() atau header(‘Location: …’) yang mencoba dijalankan setelahnya, maka error akan muncul.

Penggunaan Fungsi Output yang Tidak Tepat

Fungsi-fungsi PHP yang memang bertugas untuk menghasilkan output ke browser, seperti echo, print, var_dump(), atau print_r(), jika diletakkan di bagian skrip yang dieksekusi sebelum ada upaya modifikasi Header, dapat memicu munculnya masalah ini.

Hal ini sering terjadi saat developer melakukan debugging dengan var_dump() dan lupa menghapusnya. Begitu var_dump() mencetak hasilnya, Header langsung terkunci.

Byte Order Mark (BOM) pada Encoding File

Ini adalah penyebab yang lebih teknis, tetapi sering terjadi pada file yang disimpan menggunakan encoding tertentu, terutama UTF-8 dengan BOM (Byte Order Mark).

BOM adalah karakter tak terlihat yang diletakkan di awal file untuk memberi tahu aplikasi bahwa file tersebut menggunakan encoding UTF-8.

Masalahnya, PHP menganggap karakter BOM ini sebagai output yang harus segera dikirimkan. Solusinya adalah selalu menyimpan file PHP Anda sebagai UTF-8 tanpa BOM.

Masalah pada Plugin atau Tema WordPress

Bagi pengguna WordPress, error ini sangat sering bersumber dari kode yang buruk pada plugin atau theme yang baru diinstal atau diperbarui.

Ketika sebuah plugin atau theme memuat file PHP yang mengandung salah satu masalah di atas (spasi, BOM, atau echo yang tidak tepat) dan dieksekusi sebelum Header diatur oleh core WordPress, maka seluruh sistem akan crash dengan error “Cannot modify header information”.

Cara Mengatasi Error Cannot Modify Header Information

Ikuti langkah-langkah praktis berikut untuk menyelesaikan masalah ini:

Langkah 1: Identifikasi Lokasi Error dengan Tepat

Perhatikan pesan error yang muncul di layar Anda, karena pesan tersebut akan memberikan dua informasi penting:

  • File dan Baris Penyebab Output: File mana yang pertama kali memulai output yang tidak seharusnya, dan di baris ke berapa.
    Contoh:
    output started at /public_html/wp-content/plugins/my-plugin/my-function.php:1
  • File dan Baris Kegagalan Header: File mana yang gagal memodifikasi Header.
    Contoh:
    in /public_html/wp-includes/pluggable.php on line 1300

Langkah 2: Periksa dan Bersihkan File Sumber Masalah

Setelah Anda mengidentifikasi file penyebab, akses file tersebut melalui File Manager di cPanel hosting Anda atau menggunakan FTP Client (seperti FileZilla). Buka file tersebut dengan text editor sederhana (bukan Microsoft Word).

Hapus Spasi atau Baris yang Tidak Perlu

Perhatikan baris pertama dan terakhir dari kode di file tersebut:

  1. Baris Pertama: Pastikan tag pembuka <?php adalah karakter pertama di file Anda, tanpa spasi, tab, atau baris baru di depannya.<?php// Koding Anda dimulai di siniHindari:<?php // Ada spasi di sini
  2. Baris Terakhir: Jika Anda menemukan tag penutup ?>, pastikan tidak ada spasi atau baris baru setelahnya. Lebih baik lagi, hapus tag penutup ?> sepenuhnya.
    Dalam praktik koding PHP modern, terutama pada
    plugin dan theme WordPress, tag penutup di akhir file PHP seringkali dihilangkan untuk mencegah kebocoran whitespace yang tidak disengaja.

Konversi Encoding File (Jika Perlu)

Jika error muncul di baris 1 padahal Anda yakin tidak ada spasi, kemungkinan besar pelakunya adalah Byte Order Mark (BOM).

  1. Buka file menggunakan text editor yang memiliki opsi untuk mengubah encoding (seperti Notepad++, Sublime Text, atau VS Code).
  2. Cari opsi Encoding atau Character Set.
  3. Pastikan encoding yang digunakan adalah UTF-8 (tanpa BOM).
  4. Simpan ulang file tersebut dan upload kembali ke server.

Hapus Fungsi Debugging yang Tercecer

Cek seluruh file dari atas ke bawah. Pastikan tidak ada fungsi debugging yang terlewatkan dan menghasilkan output, seperti:

  • echo ‘tes’;
  • print_r($variable);
  • var_dump($object);
  • die(); atau exit(); yang ditempatkan terlalu dini.

Langkah 3: Isolasi Masalah (Khusus WordPress)

Jika Anda menggunakan WordPress dan error terjadi setelah Anda menginstal atau memperbarui plugin atau theme tertentu, lakukan isolasi:

  1. Nonaktifkan Semua Plugin: Akses folder wp-content via FTP/File Manager, lalu ubah nama folder plugins menjadi plugins-off.
    Ini akan menonaktifkan semua
    plugin sekaligus. Jika website normal kembali, masalahnya ada pada salah satu plugin.
  2. Ganti Tema Sementara: Ganti theme Anda ke theme bawaan WordPress (seperti Twenty Twenty-Four) untuk mengeliminasi theme sebagai sumber masalah.

Setelah Anda berhasil mengisolasi sumbernya (misalnya, plugin X yang bermasalah), kembalikan nama folder ke semula, lalu aktifkan kembali plugin atau theme satu per satu sampai pesan error muncul kembali.

Setelah menemukan sumbernya, Anda dapat menonaktifkan plugin dan mengganti tema Anda ke tema bawaan WordPress untuk sementara.

Langkah 4: Ganti File yang Corrupt (Opsi Terakhir)

Jika Anda menemukan error terjadi pada file inti WordPress (misalnya, di folder wp-includes atau wp-admin) dan Anda tidak yakin atau tidak berani memodifikasi kode, opsi terbaik adalah mengganti file yang corrupt tersebut dengan file aslinya dari paket instalasi WordPress yang baru.

  1. Download paket instalasi WordPress terbaru.
  2. Cari file yang bermasalah di paket instalasi tersebut.
  3. Upload dan timpa file lama di server Anda dengan file yang baru.

Penutup

Error “Cannot modify header information” pada dasarnya berkaitan dengan urutan eksekusi dalam PHP. Selama output dikirim sebelum Header dimodifikasi, error ini berpotensi muncul.

Dengan mengikuti langkah identifikasi dan perbaikan yang telah dibahas, Anda dapat menangani error ini tanpa perlu melakukan perubahan besar pada sistem. Pendekatan yang teliti dan terstruktur akan sangat membantu dalam menjaga stabilitas website Anda.

Untuk meminimalkan risiko error teknis sekaligus memastikan performa website tetap optimal, penting untuk menggunakan layanan hosting yang andal dan didukung oleh infrastruktur berkualitas.

Exabytes menyediakan berbagai pilihan hosting dengan konfigurasi server modern, dukungan teknis profesional, serta uptime tinggi untuk membantu website Anda berjalan lebih stabil dan aman.

Dengan fondasi hosting yang tepat, Anda dapat lebih fokus mengembangkan bisnis tanpa harus khawatir terhadap kendala teknis yang menghambat performa website.