Home > Networking > Pesan Error PHP

Pesan Error PHP


Hari ini luar biasa.. setelah bertemu dengan seorang senior dari perusahaan saya, saya diberikan sebuah scrip php yang unik. Berkali-kali saya kotak katik selalu muncul pesan error

warning: …..Cannot send session cookie – headers already sent by (output started at..

lumayan membingungkan juga, karna selain saya newbie di dunia php, tadinya di Laptopnya nggak nongol tuh pesan mesra tersebut..

Selidik punya selidik dengan bertambahnya denyut dikepala dan segelas kopi bikinan istri, dan atas bantuan Mbah surip .. eh.. Mbah Goggle, saya menemukan solusi dari beberpa forum php yang di asuh oleh para dewanya php.

Ternyata kesalahannya hanya perlu penambahan value di php.ini

Berikut suntingannya solusinya..

…. Saat menjalankan skrip PHP, di browser muncul pesan kesalahan dengan teks “headers already sent”, contoh:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already
sent by (output started at /home/sloki/user/t10000/sites/example.com/www/index.php:5

Penjelasan/solusi

Skrip PHP Anda telah “mencetak sesuatu”. Seperti diketahui, dalam sebuah respon HTTP, header harus dikirim sebelum bodi. Jadi jika sudah mencetak sesuatu (ke bodi), maka header juga pasti sudah dikirimkan oleh PHP sebelum bodi. Sehingga hal-hal yang ingin kita lakukan yang melibatkan perubahan di header HTTP, misalnya mengeset cookie, session, mengirimkan header tambahan seperti Location, dll tidak lagi bisa dilakukan.

“Mencetak sesuatu” ini bisa karena Anda sengaja/tidak sengaja memberikan perintah echo atau print, atau ada kesalahan/warning dalam skrip sehingga PHP mencetak pesan kesalahan/warning, atau bisa juga karena ada baris kosong atau kode HTML yang ada di file sebelum skrip PHP Anda. Karena itu pastikanlah bahwa tag pembuka skrip PHP:

<?php

ada di baris pertama kolom pertama. Jangan ada teks lain atau baris kosong sebelumnya.

Alternatif solusi lain adalah menghidupkan output buffering, sebuah fitur di PHP yang menyebabkan PHP menyimpan dulu di buffer semua perintah mencetak ke bodi sampai skrip PHP selesai (atau sampai PHP disuruh secara eksplisit untuk memflush buffer). Dengan cara ini, kita dapat mengeset header sesudah perintah echo, karena perintah echo kita akan dibuffer dulu.

Cara menghidupkan output buffering adalah dengan menaruh baris fungsi ob_start(); di awal skrip Anda (sebelum semua output lain tentunya) atau menaruh baris:

output_buffering=1

di php.ini Anda…..

Sumber solusi http://kb.masterweb.net


Categories: Networking
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: