Monday, June 27, 2005

 

PHP redirect error


นั่งปรับปรุงเว็บส่วนตัวอยู่ตอนนี้ สร้างฟอร์มให้ป้อนข้อมูล แล้วส่งไปเขียนลง MySQL เขียนเสร็จก็จะให้ redirect กลับไปที่เมนูหลักด้วยคำสั่งดังนี้

header("Location:./index.php?menu=0200&write=1"); // redirect ->

ปรากฏว่าเบราซ์เซอร์ฟ้อง error ดังข้างล่างแล้วก็หยุดทำงาน

Warning: Cannot modify header information - headers already sent by (output started at C:\Apache2\htdocs\veerawat\0200-wrcomment.php:8) in C:\Apache2\htdocs\veerawat\0200-wrcomment.php on line 23

วิธีการแ ก้ไขต้องเข้าไปที่ไฟล์ php.ini แล้วเข้าไปหาไดเร็กทีฟที่ชื่อว่า output_buffering ครับ โดยค่า default มาแล้วมันจะเป็น Off อยู่ให้เราแก้เป็น On บันทึกไฟล์ php.ini แล้วอย่าลืม restart Apache ใหม่ครับ

; Output buffering allows you to send header lines (including cookies) even
; after you send body content, at the price of slowing PHP's output layer a
; bit. You can enable output buffering during runtime by calling the output
; buffering functions. You can also enable output buffering for all files by
; setting this directive to On. If you wish to limit the size of the buffer
; to a certain size - you can use a maximum number of bytes instead of 'On', as
; a value for this directive (e.g., output_buffering=4096).
output_buffering = On

This page is powered by Blogger. Isn't yours?