【轉載】PHP.INI配置:Session配置詳細說明教程

網上有不少PHP.INI文件配置的中文說明,可是對於PHP初學者來講在進行PHP運行環境搭建配置時仍是容易一頭霧水,今天換一種角度來分享如何進行php.ini配置,以求達到解決實際問題的效果,開篇以PHP教程方式詳細介紹如何經過php.ini來配置Session,以實現基本的Session應用。php

  咱們知道在利用PHP進行購物車、用戶登陸等交互式網站開發時,Session是一種很好的解決方法,若是採用XAMPP,AppServ等PHP安裝包,通常狀況下,PHP Session設置系統都會配置若是採用手動配置PHP運行環境,就須要咱們經過php.ini來對Session進行配置,下面詳細介紹如何進行Session配置。linux

  PHP運行環境說明ajax

  我採用的是DedeAMPZ,PHP版本5.2.4,若是你是手動安裝PHP運行環境,你須要將php.ini-dist或者php.ini-recommended重命名爲php.ini,並將其複製在windows目錄下。shell

  php.ini中的session配置說明數據庫

  下面介紹能讓session運行的必要配置步驟apache

  手動配置PHP運行環境時,最容易遺忘的一項是服務器端session文件的存儲目錄配置工做,打開php.ini文件,搜索Session,找到session.save_path,默認值爲/tmp,表明session文件保存在c:/tmp目錄下,默認tmp目錄並無建立,你能夠在c盤下建立tmp目錄,或者建立一個其餘目錄,好比leapsoulcn,再修改session.save_path的值,並去掉;,即windows

  session.save_path = ‘/leapsoulcn’;瀏覽器

  注意事項安全

  一、通常爲了保證服務器的安全,session.save_path值最好設置爲外網沒法訪問的目錄,另外若是你是在linux服務器下進行session配置,請務必同時配置此目錄爲可讀寫權限,不然在執行session操做時會報錯。服務器

  二、在使用session變量時,爲了保證服務器的安全性,最好將register_globals設置爲off,以保證全局變量不混淆,在使 用session_register()註冊session變量時,你能夠經過系統全局變量$_SESSION來訪問,好比你註冊了leapsoulcn 變量,你能夠經過$_SESSION['leapsoulcn']來訪問此變量。

  session.save_path配置其餘說明事項,從php.ini配置文件翻譯而來

  你可使用」N;[MODE;]/path」這樣模式定義該路徑,N是一個整數,表示使用N層深度的子目錄,而不是將全部數據文件都保存在一個目錄下。

  [MODE;]可選,必須使用8進制數,默認600(=384),表示每一個目錄下最多保存的會話文件數量。[MODE;]並不會改寫進程的 umask。php不會自動建立這些文件夾結構。可以使用ext/session目錄下的mod_files.sh腳本建立。若是該文件夾能夠被不安全的用 戶訪問(好比默認的」/tmp」),那麼將會帶來安全漏洞。當N>0時自動垃圾回收將會失效,具體參見下面有關垃圾蒐集的部分。

  若是你服務器上有多個虛擬主機,建議針對每一個不一樣的虛擬主機分別設置各自不一樣的目錄。

  至此最基本的session配置就完成了,你只要保存php.ini,並重啓apache,便可使用session功能。

  其餘session配置說明

  session.save_handler = 」files」

  默認以文件方式存取session數據,若是想要使用自定義的處理器來存取session數據,好比數據庫,用」user」。

  session.use_cookies = 1

  是否使用cookies在客戶端保存會話sessionid,默認爲採用cookies

  session.use_only_cookies = 0

  是否僅僅使用cookie在客戶端保存會話sessionid,這個選項可使管理員禁止用戶經過URL來傳遞id,默認爲0,若是禁用的話,客戶端若是禁用Cookie將使session沒法工做。

  session.name = 「PHPSESSID」

  當作cookie name來使用的session標識名

  session.auto_start = 0

  是否自動啓動session,默認不啓動,咱們知道在使用session功能時,咱們基本上在每一個php腳本頭部都會經過 session_start()函數來啓動session,若是你啓動這個選項,則在每一個腳本頭部都會自動啓動session,不須要每一個腳本頭部都以 session_start()函數啓動session,推薦關閉這個選項,採用默認值。

  session.cookie_lifetime = 0

  傳遞sessionid的Cookie有效期(秒),0表示僅在瀏覽器打開期間有效。

  session.gc_probability = 1

  session.gc_divisor = 100

  定義在每次初始化會話時,啓動垃圾回收程序的機率。計算公式如 下:session.gc_probability/session.gc_divisor,好比1/100,表示有1%的機率啓動啓動垃圾回收程序,對 會話頁面訪問越頻繁,機率就應當越小。建議值爲1/1000~5000。

  session.gc_maxlifetime = 1440

  設定保存的session文件生存期,超過此參數設定秒數後,保存的數據將被視爲’垃圾’並由垃圾回收程序清理。判斷標準是最後訪問數據的時間 (對於FAT文件系統是最後刷新數據的時間)。若是多個腳本共享同一個session.save_path目錄但 session.gc_maxlifetime不一樣,將以全部session.gc_maxlifetime指令中的最小值爲準。

  若是你在session.save_path選項中設定使用子目錄來存儲session數據文件,垃圾回收程序不會自動啓動,你必須使用本身編寫的shell腳本、cron項或者其餘辦法來執行垃圾蒐集。

  好比設置」session.gc_maxlifetime=1440″ (24分鐘):

  cd /path/to/sessions; find -cmin +24 | xargs rm

  以上是一些經常使用的session配置選項說明,更多的session配置選項說明你能夠參考php.ini文件中的說明。

  至此,在php.ini配置文件中對session進行配置的PHP教程就介紹完畢了,經過上面的步驟實踐與學習,基本的session功能均可以使用,至於session性能等其餘方面則須要根據服務器環境和需求進行微調了,這個得本身體會。

轉載地址:點擊我

相關文章
相關標籤/搜索