国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > PHP > 正文

解決”Cannot modify header information

2024-05-04 21:50:33
字體:
供稿:網(wǎng)友

發(fā)送頭消息前不能有任何輸出,任何修改或者發(fā)送HTTP頭的函數(shù)都必須在 任何形式的輸出 之前被調(diào)用,一些函數(shù)會(huì)修改HTTP頭:

header/header_remove

session_start/session_regenerate_id

setcookie/setrawcookie

而輸出主要可能如下:

隱性輸出

在 <?php 之前或者 ?> 之后的空格

UTF-8文件的 BOM頭

之前出現(xiàn)的報(bào)錯(cuò)信息

顯性輸出

print , echo 和其它類似的輸出函數(shù)

在 <?php 之間嵌入的原始html

為什么會(huì)出現(xiàn)Cannot modify header information – headers already sent by錯(cuò)誤

為了理解為什么頭消息必須早于輸出,我們來看看典型的HTTP響應(yīng)。PHP主要是生成HTML內(nèi)容,但同時(shí)也傳輸了一組 HTTP/CGI 頭給webserver:

  1. HTTP/1.1 200 OK 
  2.  
  3. Powered-By: PHP/5.3.7 
  4.  
  5. Vary: DontTrackMeHere 
  6.  
  7. Content-Type: text/html; charset=utf-8 
  8.  
  9. <html><head><title>PHP page output page</title></head> 
  10.  
  11. <body><h1>Content</h1> <p>Some more output follows...</p> 
  12.  
  13. and <a href="/"> <img src=internal-icon-delayed> </a> 

輸出總是尾隨頭消息出現(xiàn)。PHP必須首先傳頭消息給網(wǎng)頁(yè)服務(wù)器,并且只能傳一個(gè)。在兩個(gè)換行之后再也不能為頭消息添加任何內(nèi)容了。

當(dāng)PHP收到第一個(gè)輸出后(例:print,echo,…),它會(huì)刷新并發(fā)送設(shè)置的所有頭信息。然后就可以就可以隨心所欲的輸出了,但是此時(shí)已經(jīng)無法修改HTTP頭信息了。

如何找到早于頭消息的輸出,報(bào)錯(cuò)信息中已經(jīng)包含了所有相關(guān)能夠定位錯(cuò)誤的信息:

Warning: Cannot modify header information - headers already sent by (output started at /www/usr2345/htdocs/auth.php:52) in /www/usr2345/htdocs/index.php on line 100

可以看到header在文件的100行被調(diào)用。

“output started at” 則包含著更重要的信息:直接指名在auth.php的52行已經(jīng)產(chǎn)生了輸出。這就是我們需要找的。

一般情況:

print,echo

原始的HTML語句

<!DOCTYPE html>

  1. <?php 
  2. //已經(jīng)不能修改或發(fā)送頭消息了 
  3.  <?php 之前的空格 
  4. <?php 
  5. //這里有一個(gè)空格 
  6. UTF-8 BOM 

這是更不易察覺,但比較普遍出現(xiàn)的情況。確保用你的編輯器保存文件以“UTF-8 (no BOM)”方式保存。

報(bào)錯(cuò)信息形如 “Unknown on line 0”

一般這樣的報(bào)錯(cuò)說明輸出來自PHP擴(kuò)展或者PHP.ini設(shè)置錯(cuò)誤信息

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 徐水县| 西乌| 澄江县| 日照市| 汝阳县| 博湖县| 错那县| 宿州市| 于田县| 扶绥县| 阿瓦提县| 渝中区| 城步| 洪雅县| 城口县| 大丰市| 高碑店市| 宁强县| 诸暨市| 临西县| 叶城县| 航空| 布拖县| 东乡族自治县| 綦江县| 宜州市| 崇州市| 秭归县| 铁力市| 清苑县| 拉孜县| 应用必备| 彭州市| 元阳县| 武宁县| 大冶市| 库伦旗| 孝义市| 合江县| 山西省| 比如县|