[TIPS] Pesan ERROR “cannot modify header information – headers already sent by”

Bagi para teman-teman developer, tentu sering mengalami masalah dengan pesan error seperti berikut ini

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

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 :


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
    ob_start();

    Atau juga dapat dengan menambahkan sintaks pengubahan value PHP.ini khusus di script tersebut dengan :

    ini_set("output_bufferring","On");

    Perintah ini aman, karena hanya berlaku pada satu script atau satu induk script.

Misalnya adalah contoh berikut:


atau



 

Nah selamat mencoba

4 thoughts on “[TIPS] Pesan ERROR “cannot modify header information – headers already sent by”

Leave a Reply

Your email address will not be published. Required fields are marked *