PHP程序訪問(wèn)報(bào)錯(cuò)Warning: Cannot modify header information - headers already sent by
問(wèn)題描述
php程序出現(xiàn)報(bào)錯(cuò):”Warning: Cannot modify header information - headers already sent by ….”
問(wèn)題原因
在PHP里Cookie的使用有一些限制:1、使用setcookie必須在標(biāo)簽之前2、使用setcookie之前,不可以使用echo輸入內(nèi)容3、直到網(wǎng)頁(yè)被加載完后,cookie才會(huì)出現(xiàn)4、setcookie必須放到任何資料輸出瀏覽器前才送出
解決辦法
1、在輸出內(nèi)容之前產(chǎn)生cookie,可以在程序的最上方加入函數(shù) ob_start();ob_start :打開(kāi)輸出緩沖區(qū)函數(shù)格式:void ob_start(void)說(shuō)明:當(dāng)緩沖區(qū)激活時(shí),所有來(lái)自PHP程序的非文件頭信息均不會(huì)發(fā)送,而是保存在內(nèi)部緩沖區(qū)。為了輸出緩沖區(qū)的內(nèi)容,可以使用ob_end_flush()或flush()輸出緩沖區(qū)的內(nèi)容。
2、如果是獨(dú)立ECS服務(wù)器開(kāi)啟php.ini中的output_buffering,即:output_buffering = On;這種方法開(kāi)啟了所有php程序的輸出緩存,這樣做可能影響php執(zhí)行效率,這取決于服務(wù)器的性能和代碼的復(fù)雜度。
3、如果是Linux系統(tǒng)虛擬主機(jī),請(qǐng)將控制面板的PHP.ini設(shè)置中的【輸出緩沖區(qū)數(shù)據(jù)塊設(shè)置】參數(shù)設(shè)置為啟用,等待3分鐘后測(cè)試即可。