PHP.INI配置:Session配置詳細說明教程

來源:互聯網
上載者:User

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

  我們知道在利用PHP進行購物車、使用者登入等互動式網站開發時,Session是一種很好的解決方案,如果採用XAMPP,AppServ等PHP安裝包,一般情況下,PHP Session設定系統都會配置如果採用手動設定PHP運行環境,就需要我們通過php.ini來對Session進行配置,下面詳細介紹如何進行Session配置。

  PHP運行環境說明

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

  php.ini中的session配置說明

  下面介紹能讓session啟動並執行必要配置步驟

  手動設定PHP運行環境時,最容易遺忘的一項是伺服器端session檔案的儲存目錄配置工作,開啟php.ini檔案,搜尋Session,找到session.save_path,預設值為/tmp,代表session檔案儲存在c:/tmp目錄下,預設tmp目錄並沒有建立,你可以在c盤下建立tmp目錄,或者建立一個其他目錄,比如leapsoulcn,再修改session.save_path的值,並去掉;,即

  session.save_path = ‘/leapsoulcn’;

  注意事項

  1、一般為了保證伺服器的安全,session.save_path值最好設定為外網無法訪問的目錄,另外如果你是在linux伺服器下進行session配置,請務必同時配置此目錄為可讀寫權限,否則在執行session操作時會報錯。

  2、在使用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效能等其他方面則需要根據伺服器環境和需求進行微調了,這個得自己體會。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.