Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Amaran PHP: Tidak boleh mengubah suai maklumat pengepala – pengepala sudah menghantar penyelesaian

Amaran PHP: Tidak boleh mengubah suai maklumat pengepala – pengepala sudah menghantar penyelesaian

王林
王林asal
2023-06-22 15:15:101460semak imbas

Jika anda pernah menemui mesej ralat “Amaran PHP: Tidak boleh mengubah suai maklumat pengepala – pengepala sudah dihantar” semasa membangunkan tapak web atau aplikasi menggunakan PHP, maka anda pasti tahu betapa menyusahkannya. Walaupun ralat ini boleh menjengkelkan apabila ia berlaku, terdapat banyak cara mudah dan berkesan untuk membetulkannya. Artikel ini memperincikan punca ralat ini dan penyelesaian biasa, dengan harapan dapat membantu anda menyelesaikan masalah ini dengan lebih baik.

Pertama, mari kita fahami punca ralat ini. Dalam PHP, apabila kita ingin mengubah suai pengepala HTTP yang dihantar oleh pelayan kepada penyemak imbas, kita mesti menggunakan fungsi pengepala() pada permulaan skrip PHP kita. Walau bagaimanapun, jika terdapat sebarang output sebelum ini (termasuk ruang, teg HTML, fungsi gema atau cetakan), maka fungsi itu tidak akan berfungsi dengan betul dan mesej ralat "Amaran PHP: Tidak boleh mengubah suai maklumat pengepala – pengepala sudah dihantar" akan dipaparkan. .

Sekarang anda memahami punca ralat ini, berikut ialah beberapa penyelesaian biasa:

  1. Pastikan tiada apa-apa yang dikeluarkan sebelum fungsi header()
    Ini adalah yang paling biasa sebab. Dalam skrip PHP anda, pastikan tiada apa-apa yang dikeluarkan sebelum fungsi header(), termasuk ruang, teg HTML, fungsi gema atau cetakan. Jika anda tidak pasti terdapat sebarang output, cuba salin keseluruhan fail ke fail baharu, pastikan tiada output di dalamnya dan uji ia.
  2. Gunakan fungsi output_buffering
    Dalam PHP, terdapat fungsi yang dipanggil output_buffering yang membolehkan penimbal output mengelakkan sebarang output sebelum fungsi header(). Gunakan ob_start() untuk mendayakan penimbal output, simpan kandungan penimbal kepada pembolehubah, kemudian kosongkan penimbal dan keluarkan semua kandungan sebelum memanggil fungsi header(). Anda boleh mendayakan penimbalan dengan menambahkan kod berikut pada permulaan skrip PHP anda:
<?php
ob_start();
?>

Kemudian di mana sahaja anda perlu mengeluarkan sesuatu dalam skrip anda, gunakan kod berikut untuk menambah kandungan pada Kawasan penimbal:

<?php
echo "Hello World!";
?>

Akhir sekali, tutup penimbal sebelum fungsi header() dan keluarkan semua dalam buffer:

<?php
ob_end_flush();
?>

Menggunakan fungsi output_buffering ialah cara yang sangat berkesan untuk menyelesaikan "Tidak boleh mengubah suai maklumat pengepala - pengepala sudah dihantar” ralat. Walau bagaimanapun, ambil perhatian bahawa jika skrip anda mengambil masa yang lama untuk dilaksanakan, saiz penimbal juga akan menjadi sangat besar dan mungkin merosakkan pelayan. Dalam kes ini, anda perlu menukar saiz penimbal mengikut keadaan sebenar.

  1. Semak pengekodan editor teks anda
    Sesetengah editor teks (terutama Windows Notepad) menambah bendera BOM secara automatik apabila menyimpan fail. Bendera ini biasanya tidak kelihatan, tetapi ia boleh menyebabkan ralat "Tidak boleh mengubah suai maklumat pengepala – pengepala sudah dihantar". Jadi pastikan editor teks anda tidak menambah bendera BOM pada permulaan fail. Jika anda menggunakan Windows Notepad, gunakan editor lain seperti Notepad++, Sublime Text atau Atom.
  2. Hapuskan ruang
    Hapuskan ruang yang tidak diperlukan dalam skrip PHP anda, yang juga merupakan punca biasa ralat "Tidak boleh mengubah suai maklumat pengepala – pengepala sudah dihantar". Anda boleh menggunakan fungsi trim() untuk mengalih keluar ruang hadapan dan belakang daripada rentetan.
  3. Gunakan PHP_EOL
    Gunakan PHP_EOL (line break) dan bukannya menggunakan "
    " atau "
    ". Ini kerana baris baharu mungkin diwakili secara berbeza dalam sistem pengendalian yang berbeza. Menggunakan PHP_EOL memastikan skrip anda akan berfungsi dengan betul pada sistem pengendalian yang berbeza.

Kesimpulan
Ringkasnya, walaupun ralat "Tidak boleh mengubah suai maklumat pengepala – pengepala sudah dihantar" nampaknya menyakitkan kepala, pada dasarnya, ia hanya kerana sebelum memanggil fungsi pengepala() Di sana adalah keluaran. Jadi kita boleh menyelesaikan masalah ini dengan mudah dengan hanya memastikan tiada output sebelum memanggil fungsi header(). Jika anda masih tidak dapat menyelesaikan isu dengan mengikut kaedah di atas, sila semak semula kod dan tetapan pelayan anda atau dapatkan bantuan profesional.

Atas ialah kandungan terperinci Amaran PHP: Tidak boleh mengubah suai maklumat pengepala – pengepala sudah menghantar penyelesaian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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