"Warning: Cannot Modify Header Information – Headers Already Sent" di PHP
Arti Error
Error ini muncul saat kamu mencoba mengirim header HTTP (misalnya dengan header()
, setcookie()
, atau session_start()
), setelah PHP sudah mengirim output ke browser, seperti teks, spasi kosong, HTML, atau echo/print.
Contoh Error:
Warning: Cannot modify header information - headers already sent by (output started at /path/file.php:5)
Artinya, baris 5 di file tersebut sudah mengirim output ke browser sebelum fungsi header()
dipanggil.
Solusi dan Penyebab Umum
1. Output Dikirim Sebelum header()
echo "Selamat datang!";
header("Location: dashboard.php"); // ERROR!
Solusi:
Tempatkan header()
sebelum output apapun.
header("Location: dashboard.php");
exit;
2. Spasi Kosong atau Enter di Awal File PHP
// Ada spasi kosong sebelum tag pembuka PHP
␣␣<?php
session_start();
Solusi:
Hapus semua karakter sebelum <?php
dan sesudah ?>
(jika ada).
<?php
session_start();
3. Menutup File PHP dengan ?>
lalu Ada Spasi
<?php
// kode PHP
?>
<!-- Ini akan mengirim output -->
Solusi:
-
Jangan pakai
?>
di akhir file PHP murni. - Atau pastikan tidak ada spasi/enter setelahnya.
4. Menggunakan echo/print Sebelum header()
echo "Redirecting...";
header("Location: halaman.php"); // Error
Solusi:
Gunakan header()
dulu, lalu exit
:
header("Location: halaman.php");
exit;
5. Gunakan Output Buffering
Kalau kamu tidak bisa menghindari output di awal, kamu bisa mengaktifkan output buffering:
<?php
ob_start(); // Aktifkan buffering
session_start();
header("Location: index.php");
ob_end_flush(); // Opsional: kirim output
Tips Mendeteksi Error Ini:
- Gunakan editor seperti VS Code untuk mendeteksi spasi tersembunyi.
- Lihat lokasi file dan baris pada pesan error: biasanya menunjukkan di mana output pertama terjadi.
-
Cari tahu file mana yang mengirim output sebelum
header()
dipanggil.
0 comments:
Post a Comment