Penyelesaian kepada pengepala php yang tidak sah: 1. Batalkan ruang antara lokasi dan simbol ":" 2. Seharusnya tiada output sebelum menggunakan pengepala 3. Ubah suai php.ini untuk membuka cache dan menambah "output_buffering= 0" ditukar kepada 409.
Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer DELL G3
Cara menyelesaikan masalah kegagalan pengepala php?
Analisis sebab dan penyelesaian untuk kegagalan Pengepala PHP
Gunakan pengepala("location:test.php") dalam PHP Sila bayar perhatian kepada perkara berikut semasa membuat lompatan:
1. Tidak boleh ada ruang antara lokasi dan tanda ":", jika tidak, ralat akan berlaku.
2. Mesti tiada keluaran sebelum menggunakan pengepala, termasuk tiada ruang selepas teg "?>" dalam halaman sertakan! !
3. Kod PHP selepas pengepala juga akan dilaksanakan.
Bersambung:
Masalah: kandungan input sebelum fungsi pengepala
Secara umumnya, kandungan html tidak boleh dikeluarkan sebelum fungsi pengepala. Begitu juga, terdapat setcookie() dan fungsi sesi ini perlu menambah maklumat pengepala mesej ke aliran keluaran. Jika terdapat pernyataan seperti gema sebelum pengepala() dilaksanakan, apabila pengepala() ditemui kemudian, "Amaran: Tidak boleh mengubah suai maklumat pengepala - pengepala telah dihantar oleh…." Maksudnya, tidak boleh ada sebarang teks, baris kosong, pemulangan pengangkutan, dsb. di hadapan fungsi ini, dan sebaiknya tambahkan fungsi exit() selepas fungsi header(). Contohnya, dalam penulisan yang salah berikut, terdapat baris kosong antara dua coretan kod php:
//Sepatutnya ada baris kosong di sini
Sebab:
Apabila skrip PHP mula dilaksanakan, ia boleh menghantar maklumat pengepala (tajuk) mesej dan maklumat badan pada masa yang sama pengepala mesej http (dari pengepala() atau fungsi SetCookie(). ) tidak segera dihantar, sebaliknya, ia disimpan ke senarai Ini membolehkan anda mengubah suai maklumat pengepala, termasuk pengepala lalai (cth. Pengepala Jenis Kandungan Walau bagaimanapun, setelah skrip menghantar sebarang output bukan pengepala HTML atau print() call), maka PHP mesti menghantar semua Header dahulu, kemudian menamatkan header HTTP Kemudian terus menghantar data badan Mulai dari ini, sebarang percubaan untuk menambah atau mengubah suai maklumat Header tidak dibenarkan dan akan dihantar Salah satu daripada mesej ralat di atas.
Penyelesaian:
Ubah suai php.ini untuk membuka cache (output_buffering), tukar output_buffering=0 kepada output_buffering=4096
Atau gunakan fungsi cache ob_start(), ob_end_flush(), dsb. dalam program. Prinsipnya ialah: apabila output_buffering didayakan, PHP tidak menghantar pengepala HTTP apabila skrip menghantar output. Sebaliknya, ia menyalurkan output ini ke dalam cache yang berkembang secara dinamik (hanya tersedia dalam PHP 4.0, yang mempunyai mekanisme output terpusat). Anda masih boleh mengubah suai/menambah pengepala, atau menetapkan kuki, kerana pengepala itu sebenarnya tidak dihantar. Apabila semua skrip ditamatkan, PHP secara automatik akan menghantar pengepala HTTP ke penyemak imbas, dan kemudian menghantar kandungan penimbal output.
Pembelajaran yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah kegagalan pengepala php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!