作者 主題: session_start()問題  (閱讀 20368 次)

0 會員 與 1 訪客 正在閱讀本文。

g781

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
session_start()問題
« 於: 2007-07-25 03:39 »
我系統是裝在xp
環境安裝使用appseve

昨天在用時就沒問題...
今天我把環境重用一次

這樣php程式出現了session_start()的error
我找過很資料
改了session.save.path的入徑
也在讓入徑增加了目錄
還是不能...不知為什麼昨天可以...今天就會error

我環境裝在I槽...php.ini在c:\winodws

麻煩大大幫忙一下...

oscarhsu

  • 懷疑的國中生
  • **
  • 文章數: 84
  • 性別: 男
    • 檢視個人資料
session_start()問題
« 回覆 #1 於: 2007-07-25 09:50 »
可以把完整的錯誤訊息貼出來嗎
Oscar Hsu

g781

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
session_start()問題
« 回覆 #2 於: 2007-07-25 14:34 »
引用
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at I:\www\bio\UTRHairpin\library\smarty_config.php:12) in I:\www\bio\UTRHairpin\browse\browse.php on line 7

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at I:\www\bio\UTRHairpin\library\smarty_config.php:12) in I:\www\bio\UTRHairpin\browse\browse.php on line 7


這是我的error message

browse.php on line 7是session_start()的地方
smarty_config.php是寫smarty的路徑和參數的地方

g781

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
session_start()問題
« 回覆 #3 於: 2007-07-25 14:43 »
在補充一個...因為我有裝pear:pager的套件...
如果要用到pager套件那個網頁的session_start()就會出錯...
我不過還不知出錯在那裡

梁楓

  • 俺是博士!
  • *****
  • 文章數: 6220
    • 檢視個人資料
session_start()問題
« 回覆 #4 於: 2007-07-25 15:00 »
你的檔案是 UTF-8,請找 BOM 關鍵字

--
你會找好幾篇才有確實的資料,訓練一下找資料的能力吧

g781

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
session_start()問題
« 回覆 #5 於: 2007-07-25 16:04 »
嗯...謝謝...我在試看看

g781

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
session_start()問題
« 回覆 #6 於: 2007-07-25 17:24 »
我找了BOM的一些資料...
一樣沒解決...

我在php.ini加了default_charset = "utf-8"
apache也加了AddDefaultCharset utf-8

也而網頁樣版中也都有
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

還是還有其他地方沒用到

梁楓

  • 俺是博士!
  • *****
  • 文章數: 6220
    • 檢視個人資料
session_start()問題
« 回覆 #7 於: 2007-07-25 17:32 »
你有仔細看文章的前因後果嗎?

你說的這幾個,是因應“亂碼”,而不是“錯誤”

在找一次?

--

我是在訓練你找答案的能力,這樣子你往後的日子才會比較好過

g781

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
session_start()問題
« 回覆 #8 於: 2007-07-25 17:36 »
喔...好..真是不好意思

螢火飛

  • 酷!學園 學長們
  • 活潑的大學生
  • ***
  • 文章數: 400
    • 檢視個人資料
    • http://firefly.idv.tw
session_start()問題
« 回覆 #9 於: 2007-07-25 20:23 »
一、你的 php 程式開頭幾行是不是有空白列?是的話,去掉。

or

二、在 session_start() 之前,加上 ob_start()

g781

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
session_start()問題
« 回覆 #10 於: 2007-07-25 22:44 »
還是不行...
完全不知到怎麼用...好像大家都是在說編碼的問題...

而且我試了螢火飛大大加前面加了ob_start()而且也沒有空白列

最主要的是我程式是從linux上移值過來的...一開始沒問題...
都可以run...但隔天重用...程式都沒動過...所以摸不找頭緒

我剛剛自己寫了一個session_start()的空白網頁...
執行他一次...沒問題...在換到原來的網頁...

發現原本第二錯誤的地方...少了一個...I am shock...why?
引用
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at I:\www\bio\UTRHairpin\library\smarty_config.php:12) in I:\www\bio\UTRHairpin\browse\browse.php on line 7


大大在多給點方向...不信用不好...

梁楓

  • 俺是博士!
  • *****
  • 文章數: 6220
    • 檢視個人資料
session_start()問題
« 回覆 #11 於: 2007-07-25 22:45 »
好,那你先回答我幾個問題
1. session 的使用有什麼限制?
2. BOM 是什麼?

你不用回答出正確答案,而是要回答你已經知道的

g781

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
session_start()問題
« 回覆 #12 於: 2007-07-25 23:12 »
1.session有什麼限制我還真不太知道...我知道他的使用期間在一個網頁的開始和到網頁的結束(包括他所開的子網頁)...每個人所用的session都不會一樣...

2.BOM(bytes of maker)今天看了很多...太概知道他是UTF-8在處理編號方式...有分為兩種...一種叫LE(UNIX)...一種叫CR(MAC)..如果在windows是用(CR+LE)...
也就是如果用LE(還是用CR..忘了)...他會不作看不懂不認得某一些字元...所以不作處理...
而另一種...他會認得...會作處理...

呼...差不多知道這些吧

梁楓

  • 俺是博士!
  • *****
  • 文章數: 6220
    • 檢視個人資料
session_start()問題
« 回覆 #13 於: 2007-07-25 23:14 »
1. session 跟cookie 相同,必需在所有的資料“送出去”之前就開始處理
2. Windows 對 UTF-8編碼的檔案,會在檔案放些什麼?

g781

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
session_start()問題
« 回覆 #14 於: 2007-07-25 23:17 »
2. Windows 對 UTF-8編碼的檔案,會在檔案放些什麼?
我google一下

g781

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
session_start()問題
« 回覆 #15 於: 2007-07-26 00:08 »
2. Windows 對 UTF-8編碼的檔案,會在檔案放些什麼?

會在UTF-8編碼的檔案的開首加入一段位元組串EF BB BF。這是編碼成UTF-8的Byte Order Mark U+FEFF。不預期要處理UTF-8的文字編輯器和瀏覽器會會顯示為ISO-8859-1字元""。

梁楓

  • 俺是博士!
  • *****
  • 文章數: 6220
    • 檢視個人資料
session_start()問題
« 回覆 #16 於: 2007-07-26 00:52 »

你在看一下session 的限制

發覺問題在那了嗎?

g781

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
session_start()問題
« 回覆 #17 於: 2007-07-26 01:18 »
還是不能明白...
因為他不知在檔案的開頭加一串字元...
如果不預期的話...瀏覽器頂多顯示一個""

不過utf-8會在每一個byte跟隨著一個10x0000~10xxxxx的point...
會不會是多那個前面EF BB BF...如果瀏覽器沒處理EF BB BF...以至於後面的編碼都亂了

梁楓

  • 俺是博士!
  • *****
  • 文章數: 6220
    • 檢視個人資料
session_start()問題
« 回覆 #18 於: 2007-07-26 01:20 »
1. session 跟cookie 相同,必需在所有的資料“送出去”之前就開始處理

你的檔案在windows 開啟,在存檔,windows 自動植入BOM
接著瀏覽器開啟的時候,是不是就會先“送出”這二個字元?
那不就會違反這個規則?

g781

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
session_start()問題
« 回覆 #19 於: 2007-07-26 01:25 »
嗯...對丫...
不過我檔案不是utf-8...
我看他是存成big5

不過我的starmty裡面是utf-8的檔案...

梁楓

  • 俺是博士!
  • *****
  • 文章數: 6220
    • 檢視個人資料
session_start()問題
« 回覆 #20 於: 2007-07-26 01:27 »
那怎麼我第一次講你的檔案是utf8的時候,你怎麼不訂正呢?

如果是big 5 你就要去查你的程式,那怕是你的檔案前面不小心加了個小空白
也會讓session 出錯

我的習慣是在第一個檔案的第一行就直接session_start();

g781

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
session_start()問題
« 回覆 #21 於: 2007-07-26 01:39 »
sorry...
我剛剛找了...smarty_config.php...
他最後面一行多一個空白...
我把他刪除...就沒有session_start的error...
但出現了...
另一個函式出現了無效的參數...
好怪...

我在把程式轉看utf-8在試看看...
真的很不好意思...

梁楓

  • 俺是博士!
  • *****
  • 文章數: 6220
    • 檢視個人資料
session_start()問題
« 回覆 #22 於: 2007-07-26 01:40 »
轉到utf-8 不存在的 function也不會憑白跑出來

g781

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
session_start()問題
« 回覆 #23 於: 2007-07-26 01:45 »
程式是沒有錯...因為我是移值別人的程式到winodws上
之前在linux上都沒問題...
我第一次windows架環境時..也都run 也都OK...

我想請問一下...如果轉成UTF-8為了不讓他前面沒有開頭的字串...
是不是就不要有BOM

梁楓

  • 俺是博士!
  • *****
  • 文章數: 6220
    • 檢視個人資料
session_start()問題
« 回覆 #24 於: 2007-07-26 01:47 »
1. 你確定所有php functoin 都是內建的嗎?
2. 對

g781

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
session_start()問題
« 回覆 #25 於: 2007-07-26 01:55 »
這個我就不太確定...不過應該是不太可能全都內建...

不過因為linux那台的網頁...可以對照...
所以我處理同樣的動作...如果function有錯...
linux那台應該也會出現同樣錯吧...

g781

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
session_start()問題
« 回覆 #26 於: 2007-07-26 04:05 »
我找到答案了...

首先這裡是因為我smarty_config.php最後一行也...就是?>
這地方後面多一個空白...不過我也不知為什麼...
通常只有在第一行有空白才會出現錯誤...
或者是session_start()之前有輸出資料才出錯...
如果有大大知道原因...告訴我一下
代碼: [選擇]
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at I:\www\bio\UTRHairpin\library\smarty_config.php:12) in I:\www\bio\UTRHairpin\browse\browse.php on line 7

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at I:\www\bio\UTRHairpin\library\smarty_config.php:12) in I:\www\bio\UTRHairpin\browse\browse.php on line 7


之後把空白刪除後...還是會出現有函式有出錯...(分頁連結執行時會出錯)
找了很久...也不知原因...在要睡覺前...
在檢查一下環境...本來我想seesion.path.save和cookie.path.save都設成一樣...
PS:其實我也不知cookie.path.save要不要設定..只是一開始一直session_start.save就只好設定看看是不是那個問題...
最後把cookie.path.save設成default的值...
程式就OK了...也不會出現錯誤了...


不過很感謝梁楓大大...今天還真的學到很多...
學到很多關念...真的太感謝梁風大大...

梁楓

  • 俺是博士!
  • *****
  • 文章數: 6220
    • 檢視個人資料
session_start()問題
« 回覆 #27 於: 2007-07-26 04:07 »
一開始學
找資料的能力高於已經知道什麼的能力
其它就是變通的方式了

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
session_start()問題
« 回覆 #28 於: 2007-07-26 10:32 »
引述: "g781"
我找到答案了...

首先這裡是因為我smarty_config.php最後一行也...就是?>
這地方後面多一個空白...不過我也不知為什麼...
通常只有在第一行有空白才會出現錯誤...
或者是session_start()之前有輸出資料才出錯...
如果有大大知道原因...告訴我一下
代碼: [選擇]
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at I:\www\bio\UTRHairpin\library\smarty_config.php:12) in I:\www\bio\UTRHairpin\browse\browse.php on line 7

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at I:\www\bio\UTRHairpin\library\smarty_config.php:12) in I:\www\bio\UTRHairpin\browse\browse.php on line 7


之後把空白刪除後...還是會出現有函式有出錯...(分頁連結執行時會出錯)
找了很久...也不知原因...在要睡覺前...
在檢查一下環境...本來我想seesion.path.save和cookie.path.save都設成一樣...
PS:其實我也不知cookie.path.save要不要設定..只是一開始一直session_start.save就只好設定看看是不是那個問題...
最後把cookie.path.save設成default的值...
程式就OK了...也不會出現錯誤了...


不過很感謝梁楓大大...今天還真的學到很多...
學到很多關念...真的太感謝梁風大大...


從頭到尾,我看了半天,你最大的問題在於不看錯誤訊息。
代碼: [選擇]
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at I:\www\bio\UTRHairpin\library\smarty_config.php:12) in I:\www\bio\UTRHairpin\browse\browse.php on line 7

錯誤訊息中已經很明顯的說了,在 session_start() 之前就輸出網頁內容的地方在那裡...
(output started at I:\www\bio\UTRHairpin\library\smarty_config.php:12)

至於 seesion.path.save 和 cookie.path.save 只能說你在不知道的情況下亂設定,導致後來的錯誤,所幸後來還有拿掉,所以才會正常。

至於之前為什麼 windows 下的會正常,我想應該是 php.ini 中的自動 output_buffer 有開的關係...
所以會自動 oubput_buffer 一定的長度...記得大部份預設的是..
output_buffering = 4096
也就是自動 buffer 4K 的內容.
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

g781

  • 懷疑的國中生
  • **
  • 文章數: 39
    • 檢視個人資料
session_start()問題
« 回覆 #29 於: 2007-07-26 14:47 »
錯誤訊息我有看...只是看不太出來smart_config.php 12行那裡錯...
所以就一定focus在browse.php...
不過以後會多一份經驗...php算第一次接觸...比較陌生
不過還是謝謝了