promotion image of download ymail app
Promoted
匿名
Lv 7
匿名 asked in 電腦與網際網路程式設計 · 1 decade ago

以下的php所傳回的錯誤信息是什麼意思?

Warning: Cannot modify header information - headers already sent by (output started at a.php:9) in b.php on line 64以上的php所傳回的錯誤信息是什麼意思?

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    這一行的意思是說

    因為你的網頁內容已經傳送給客戶端了

    所以不能夠再變更表頭的設定值

    原理是這樣的

    HTTP 協定的傳輸上

    伺服端會傳輸許多資料給客戶端

    而且是有順序的

    首先會先傳輸ㄧ些特別資料給客戶端

    例如編碼方式, 最後修改時間, 資料類型, Cookie

    這些資料傳輸完畢以後才開始傳輸各種資料內容

    例如 HTML 網頁, JPG 圖檔, 或是普通的檔案

    因為有這樣的順序, 所以當你的 PHP 程式已經進行到傳輸資料的階段

    就不能再變更那些特別的資料

    常見的錯誤像是在這個階段裡面設定 Cookie 值, 重新導向, 或是設定語系等等

    所以當你有用到 header() 的時候, 要特別注意盡量寫在程式前面的部份

    • Commenter avatarLogin to reply the answers
  • 1 decade ago

    回答這題實在是有點.... 因為您的錯誤訊息可能和 copy 上個問題有關.

    基本上這個問題是發生在 B.PHP 的第64行, 還存在著 Header 有關的定義.

    那個定義極可能是 session_start(); header()......... 等等語法.

    然而十分明顯可以猜的出來, 在 64 行之前, 您曾經 require 或者 include 一個檔案

    名字叫做 a.php

    此時讓我想起會不會是我上個回答您照抄的結果呢......

    <? if(file_exists("a.php")){

    require("a.php");

    if($a==1){

    echo "條件成立";

    }

    }else{

    echo "無檔案";

    }

    ?>

    我的天..... 是有可能的. 請您將 echo 指令改成變數. 不要顯示任何文字即可. 記得即使 '<? ?>' 前面多個空白, 或是有一行空白行, 都會造成這個現象出現.

    最佳解答請'''''不要'''''選我, 謝謝

    • Commenter avatarLogin to reply the answers
Still have questions? Get your answers by asking now.