Rumah > pembangunan bahagian belakang > tutorial php > Mengapa Saya Mendapat Ralat 'Tajuk Sudah Dihantar' dalam PHP?

Mengapa Saya Mendapat Ralat 'Tajuk Sudah Dihantar' dalam PHP?

Linda Hamilton
Lepaskan: 2024-12-20 13:46:09
asal
591 orang telah melayarinya

Why Am I Getting a

Ralat Telah Dihantar dalam PHP

Apabila menjalankan skrip PHP, anda mungkin menghadapi ralat seperti:

Warning: Cannot modify header information - headers already sent by (output started at /some/file.php:12) in /some/file.php on line 23
Salin selepas log masuk

Ini berlaku apabila pengepala HTTP cuba dihantar/diubah suai selepas sebarang output dijana. Fungsi seperti header(), setcookie(), dan session_start() memerlukan pengepala dihantar sebelum sebarang output dibuat.

Punca Pengepala Telah Dihantar Ralat

Output Tidak Disengajakan:

  • Ruang putih sebelum
  • UTF-8 Byte Order Mark (BOM)
  • Mesej atau notis ralat sebelumnya

Output Sengaja:

  • Berfungsi seperti mencetak, gema atau lain-lain menghasilkan output
  • HTML Mentah bahagian

Mengenal pasti Sumber Output

Mesej ralat biasanya termasuk baris di mana fungsi pengepala dipanggil (cth., baris 23) dan sumber output pramatang (cth., baris 12).

Penyelesaian

Elakkan Pramatang Output:

  • Gunakan fungsi dan skema templat untuk menyusun semula aliran aplikasi.
  • Pastikan panggilan header() dibuat sebelum menulis mesej atau memaparkan output.

Betulkan Spesifik Punca:

  • Cetak/Gema: Gunakan fungsi seperti trigger_error, ob_flush atau var_dump untuk mengurus output.
  • HTML Mentah: Place pemprosesan borang dan syarat skrip sebelum HTML bahagian.
  • Ruang putih: Alih keluar ruang putih terkemuka atau gunakan teg PHP yang panjang () dan bukannya teg trengkas (
  • UTF-8 BOM: Tetapkan editor teks anda untuk menyimpan fail sebagai "UTF-8 (tiada BOM)" atau gunakan editor heks untuk mengalih keluar BOM.
  • Mengekor Ruang Putih selepas ?>: Abaikan mengekori teg tutup PHP.
  • Lain-lain: Semak sambungan PHP atau tetapan php.ini yang mungkin menyebabkan output tersirat.
  • Ralat Mesej: Elakkan ralat, tangguhkan pelaksanaannya atau sekatkannya menggunakan isset() atau @().

Penimbalan Output (Penyelesaian):

  • Dayakan output penimbalan dengan menetapkan output_buffering dalam php.ini atau menggunakan ob_start().
  • Gunakan ob_clean() jika kandungan binari dijana.
  • Perhatikan bahawa penimbalan output bukan pengganti untuk penstrukturan aplikasi yang betul.

Penyelesaian Saling Balik :

  • HTML Meta Teg: Suntikan
  • JavaScript Redirect: Gunakan location.replace () atau location.href= untuk mengubah hala pelanggan.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Tajuk Sudah Dihantar' dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan