PHP提示Cannot modify header information - headers already sent by解決方法
本文實(shí)例講述了PHP提示Cannot modify header information - headers already sent by解決方法,是進(jìn)行PHP程序設(shè)計(jì)過程中經(jīng)常會遇到的問題。本文對此以實(shí)例形式分析解決方法。分享給大家供大家參考。具體方法如下:
現(xiàn)來看看這段代碼:
<?php
ob_start();
setcookie("username","test",time()+3600);
echo "the username is:".$HTTP_COOKIE_VARS["username"]."\n";
echo "the username is:".$_COOKIE["username"]."\n";
print_r($_COOKIE);
?>
訪問該P(yáng)HP文件時提示W(wǎng)arning: Cannot modify header information - headers already sent by
出錯的原因:
原因是在php程序的頭部加了,header("content-type: text/html; charset=utf-8");之后頁面就出現(xiàn)上面的錯誤。
因?yàn)?header('Content-Type:text/html;charset= UTF-8');發(fā)送頭之前不能有任何輸出,空格也不行,你需要將header(...)之前的空格去掉,或者其他輸出的東西去掉,如果他上面include其他文件了,你還要檢查其他文件里是否有輸出。
上網(wǎng)查了一些資料,說是我的php.ini里面的配置出了問題,找到php.ini文件中的output_buffering默認(rèn)為off的,把它改為on或者任意一個數(shù)字,但嘗試無結(jié)果。
setcookie函數(shù)必須在任何資料輸出至瀏覽器前,就先送出
基于上面這些限制,所以執(zhí)行setcookie()函數(shù)時,常會碰到"Undefined index"、"Cannot modify header information - headers already sent by"…等問題,解決"Cannot modify header information - headers already sent by"這個錯誤的方法是在產(chǎn)生cookie前,先延緩資料輸出至瀏覽器,因此,您可以在程序的最前方加上ob_start()函數(shù)。
ob_start()函數(shù)用于打開緩沖區(qū),比如header()函數(shù)之前如果就有輸出,包括回車\空格\換行\(zhòng)都會有"Header had all ready send by"的錯誤,這時可以先用ob_start()打開緩沖區(qū)PHP代碼的數(shù)據(jù)塊和echo()輸出都會進(jìn)入緩沖區(qū)而不會立刻輸出!
通過以下方法,問題得到解決:
//在header()之前
ob_start(); //打開緩沖區(qū)
echo \"Hellon\"; //輸出
header("location:index.php"); //把瀏覽器重定向到index.php
ob_end_flush();//輸出全部內(nèi)容到瀏覽器
?>
希望本文所述對大家PHP程序設(shè)計(jì)的學(xué)習(xí)有所幫助。
- php session_start()關(guān)于Cannot send session cache limiter - headers already sent錯誤解決方法
- php 模擬get_headers函數(shù)的代碼示例
- 使用php get_headers 判斷URL是否有效的解決辦法
- php中g(shù)et_headers函數(shù)的作用及用法的詳細(xì)介紹
- PHP錯誤Warning: Cannot modify header information - headers already sent by解決方法
- PHP使用get_headers函數(shù)判斷遠(yuǎn)程文件是否存在的方法
- PHP實(shí)現(xiàn)的帶超時功能get_headers函數(shù)
- PHP getallheaders無法獲取自定義頭(headers)的問題
相關(guān)文章
PHP面向?qū)ο蟪绦蛟O(shè)計(jì)類的定義與用法簡單示例
這篇文章主要介紹了PHP面向?qū)ο蟪绦蛟O(shè)計(jì)類的定義與用法,結(jié)合實(shí)例形式分析了php類的定義、實(shí)例化、__set()及__get()具體使用技巧,需要的朋友可以參考下2016-12-12
php中使用key,value,current,next和prev函數(shù)遍歷數(shù)組的方法
這篇文章主要介紹了php中使用key,value,current,next和prev函數(shù)遍歷數(shù)組的方法,較為詳細(xì)的分析了php中數(shù)組遍歷的常用技巧與實(shí)例用法,需要的朋友可以參考下2015-03-03
php+Ajax處理xml與json格式數(shù)據(jù)的方法示例
這篇文章主要介紹了php+Ajax處理xml與json格式數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了ajax處理xml格式數(shù)據(jù)及json格式數(shù)據(jù)相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-03-03
Swoole 5將移除自動添加Event::wait()特性詳解
這篇文章主要給大家介紹了關(guān)于Swoole 5將移除自動添加Event::wait()特性的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Swoole5具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
PHP中empty,isset,is_null用法和區(qū)別
最近在閱讀項(xiàng)目的源碼,發(fā)現(xiàn)源碼中就對empty、isset和is_null函數(shù)(語言特性)亂用,有的地方很明顯的就挖坑了。不能正確的去理解這些東西,就很可能給后續(xù)的開發(fā)挖坑了。2017-02-02

