Bagi para teman-teman developer, tentu sering mengalami masalah dengan pesan error seperti berikut ini
1 |
cannot modify header information – headers already sent by (output started at /var/www/......php:108 |
Tentu membingungkan dan membuat jengkel. Namun sebelumnya, kita perlu tahu apa penyebabnya. Penyebabnya adalah PHP kita tidak terkonfigurasi untuk menerima buffer keluaran tertentu. Buffer adalah semacam memori sementara. Biasanya setting konfigurasi PHP , php.ini anda, terdapat value ini
1 |
output_buffering=Off |
Dengan kondisi seperti itu, ternyata dalam programming secara tak sadar kita telah membuka : header, session dan beberapa sintaks yang dianggap sebagai header, bahkan spasi pun bisa dianggap juga. Contoh adalah :
1 2 3 4 5 6 7 8 9 10 |
<?php session_start(); . . if($x){ header(“Location:target.php”); } . . ?> |
Setelah kita tahu penyebabnya, maka tentu kita juga memiliki solusi. Solusinya ada beberapa cara. Antara lain adalah:
- Mengganti value output_buffering pada php.ini dengan value = On. Setelah itu anda perlu restart apache anda. Resikonya adalah, seluruh aplikasi anda akan tersetting dengan output_buffering=On
- Menghilangkan spasi pindah baris pada koding PHP anda. Namun pesan error akan tetap terjadi jika anda melibatkan header dan session_start bersamaan dalam satu script
- Langkah paling enak adalah menambahkan pada script anda dengan kata
1ob_start();
Atau juga dapat dengan menambahkan sintaks pengubahan value PHP.ini khusus di script tersebut dengan :
1ini_set("output_bufferring","On");
Perintah ini aman, karena hanya berlaku pada satu script atau satu induk script.
Misalnya adalah contoh berikut:
1 2 3 4 5 6 |
<?php ob_start(); . . . ?> |
atau
1 2 3 4 5 6 |
<?php ini_set("output_buffering","On"); . . . ?> |
Nah selamat mencoba
terimakasih tutorialnya
sangat jelas + membantu
terima kasih info nya, sangat membantu
Makasih bos atas informasinya … Ane nih lg ngerjain tugas di kantor nemuin kasus yg spt ini ..
Nice gan work 100%