Freebsd上php+ session 的問題

URL Link //n.sfs.tw/13361

2019-06-29 00:11:50 By 張○○

我在Freebsd11 上裝了PHP 7.3,熟練的弄上我寫的程式,那是用Codeigniter 3的框架寫的。

但是我發現,Session 竟然抓不到?

這篇也算是札記

 

查錯

i.php

$this->session->set_userdata('s','test');
print $this->session->userdata('s'); //test 有出現

但是換另一頁 j.php,再讀取時

print $this->session->userdata('s');   //空的

發現竟然是空的?

我為了找出原因,找了快3個小時

靠....右邊走

我以為是語法有改變--->沒有。

我以為是codeigniter 設定上的問題-->不是。

我以為是session沒啟動-->有

我做了測試,發現有作用,對,就是有作用,我才沒有懷疑事實上沒有啟動。

浪費更多的時間找資料,都沒用。

明明CI3 就有寫入Session,但是怎麼都不讀出來?

最後才發現

php 的session並沒有啟動…一開始測試還有??這才是我多花時間氣死人的關鍵。

這樣範圍縮小了,就是php本身的session沒有啟動。

 

解決

編輯php.ini

把這行設定為1重啟即可

; Initialize session on request startup.
; http://php.net/session.auto-start
session.auto_start = 1

這個值我看到的時候是0,應該是預設值。

我不記得以前有這個值?

後來我發現在7.0版本上已經有這個值,而且是"0",但是沒影響什麼?

 

結論

1.  PHP7.3中 session.auto_start = 1 這樣session才會正常。

2. Freebsd安全性的設定還是比linux少很多。

3. 這個值是為了可讓各目錄分別可以決定是否讓session啟用,就是為是了做到各目錄設定的效果。

 

參考資料

[1] https://www.php.net/manual/ja/session.configuration.php#ini.session.auto-start