Amaran PHP: Tidak boleh mengubah suai maklumat pengepala - pengepala sudah dihantar oleh - 解决方案

WBOY
Lepaskan: 2023-08-19 16:10:02
asal
2637 orang telah melayarinya

PHP Warning: Cannot modify header information - headers already sent by - 解决方案

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:

  • Menggunakan fungsi output seperti gema, cetakan, dll. dalam fail PHP
  • Termasuk fail lain dalam fail PHP, dan fail ini mengandungi pernyataan output
  • Sesuatu fungsi atau kelas ditakrifkan dalam Fail PHP, dan Fungsi atau kelas ini mengandungi pernyataan output

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();
// 输出缓冲区内容,并关闭输出缓冲区
?>
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!