自動目錄
我在Freebsd11 上裝了PHP 7.3,熟練的弄上我寫的程式,那是用Codeigniter 3的框架寫的。
但是我發現,Session 竟然抓不到?
這篇也算是札記
查錯
i.php
print $this->session->userdata('s'); //test 有出現
但是換另一頁 j.php,再讀取時
發現竟然是空的?
我為了找出原因,找了快3個小時
靠....右邊走
我以為是語法有改變--->沒有。
我以為是codeigniter 設定上的問題-->不是。
我以為是session沒啟動-->有
我做了測試,發現有作用,對,就是有作用,我才沒有懷疑事實上沒有啟動。
浪費更多的時間找資料,都沒用。
明明CI3 就有寫入Session,但是怎麼都不讀出來?
最後才發現
php 的session並沒有啟動…一開始測試還有??這才是我多花時間氣死人的關鍵。
這樣範圍縮小了,就是php本身的session沒有啟動。
解決
編輯php.ini
把這行設定為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