Amaran PHP: Tidak boleh mengubah suai maklumat pengepala - pengepala sudah dihantar oleh - Penyelesaian
Dalam proses menggunakan PHP untuk membangunkan tapak web, kadangkala kita akan menemui mesej amaran berikut: Tidak boleh mengubah suai maklumat pengepala - pengepala sudah dihantar oleh (tidak boleh ubah suai pengepala - pengepala telah dihantar).
Mesej amaran ini biasanya muncul apabila kami cuba menggunakan fungsi pengepala() untuk menetapkan maklumat pengepala HTTP dalam halaman web. Punca masalah ini ialah output kandungan ke penyemak imbas sudah wujud sebelum fungsi header() dipanggil. Dalam erti kata lain, fungsi header() mesti dipanggil sebelum sebarang output.
Jadi, apabila kita menghadapi masalah ini, bagaimana kita harus menyelesaikannya? Berikut adalah beberapa penyelesaian biasa.
Penyelesaian 1: Semak aksara ruang putih dan aksara BOM
Whitespace dan BOM (Tanda Pesanan Bait) ialah salah satu punca biasa ralat "pengepala sudah dihantar". Aksara ruang putih merujuk kepada aksara seperti ruang, baris baharu atau kekunci Tab pada permulaan atau penghujung fail PHP. BOM ialah susunan bait khas yang digunakan dalam pengekodan UTF-8 untuk menandakan permulaan fail. Kewujudan aksara ini akan dianggap sebagai kandungan output, menyebabkan fungsi header() tidak dapat dipanggil secara normal.
Untuk menyelesaikan masalah ini, kami boleh membuka fail PHP yang berkaitan dan menyemak sama ada terdapat aksara kosong atau BOM pada kedudukan permulaan dan penamat. Jika aksara ini ditemui, kita harus memadam atau menggantikannya.
Penyelesaian 2: Elakkan menghantar pengepala sebelum output
Memandangkan fungsi header() mesti dipanggil sebelum sebarang output, semasa menulis kod, kita harus memberi perhatian khusus untuk mengelak daripada menghantar sebarang output sebelum memanggil fungsi header(). Ini termasuk situasi berikut:
Untuk mengelakkan situasi ini, kita boleh membuat panggilan ke fungsi header() pada awal fail PHP untuk memastikan tiada output berlaku. Di samping itu, kita juga boleh mengalihkan pernyataan output selepas panggilan fungsi header() untuk mengelak daripada mengganggu panggilan fungsi header().
Berikut ialah contoh kod yang menunjukkan cara menggunakan fungsi header() dengan betul:
<?php ob_start(); // 开启输出缓冲区 header('Content-Type: text/html; charset=utf-8'); // 设置HTTP头信息 // 其他代码... ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>示例页面</title> </head> <body> <!-- 页面内容... --> </body> </html> <?php ob_end_flush(); // 输出缓冲区内容,并关闭输出缓冲区 ?>
Dengan menggunakan fungsi ob_start() dan ob_end_flush(), kami boleh menampan semua kandungan output sehingga panggilan fungsi header() selesai Kemudian keluaran.
Ringkasan:
Apabila membangunkan tapak web PHP, menghadapi mesej amaran "Tidak boleh mengubah suai maklumat pengepala - pengepala sudah dihantar oleh" adalah masalah biasa. Untuk menyelesaikan masalah ini, kita boleh melakukan ini dengan menyemak kehadiran aksara ruang putih dan BOM, dan mengelakkan memanggil fungsi header() sebelum mengeluarkan. Harap penyelesaian ini membantu anda!
Atas ialah kandungan terperinci Amaran PHP: Tidak boleh mengubah suai maklumat pengepala - pengepala sudah dihantar oleh - 解决方案. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!