昨天客戶又過來說網站的問題,說的也都是些毛毛雨的東西,管理那么多網站,再有這么些客戶的存在,本人也是累了,但當登錄后台的時候突然發現后台登錄不了,查看了一下驗證碼服務器端的session為空值,之前登錄從來沒有出現過這情況,一開始我也猜想是服務器環境的問題,但我還是耐着性子看了看程序代碼,確實沒發現什么問題,最后轉向了服務器端度娘了這個問題,原來是session保存的權限問題,而且在之前的工作中也有很多關於權限的問題,看來權限對程序的影響真的是很重要啊。這次的精力讓我明白了以下幾點:
1.早已經完成的網站如果中間從沒動過,程序代碼也可以正常查看一般不是程序問題,要么是什么東西被別人動了,比如說病毒,日常維護操作所致,黑客等,一般是環境問題,要檢查環境
2.找問題是一個步驟性的工作,應該一步一步慢慢調試,還是不能心急,要保持心態的平和
3.不懂或不知道要多於別人溝通,確實不懂也可以問度娘(谷歌或者很好,只是本人沒那種習慣,或者以后會用到的吧)
一下是從網上別人對session的一些總結:
由於是在windows 下的iis進行php的環境,所以很多情況下不能像lamp那么簡單進行設置。由於工作原因我也遇到很多session無法保存的情況(在wamp下)。以下是相信信息的匯總,僅供參考學習。
1,php.ini設置問題,這類情況下需要設置
session_auto_start = on //這是自動開啟session的
在php文檔中輸入 phpinfo 查看是否正確的開啟了session。
2,保存session的文件夾有問題
首先查看php.ini中的session_save_path 是否存在,並且沒有被注釋掉,如果存在的話 一般在widnows中默認的為c:\windows\tmp 下,這目錄默認是不允許其他用戶讀取的。
解決方案
1.設置 文件夾為 everyone 可讀取 可寫入 ,這樣雖然可以解決問題,但是卻產生了新的問題就是安全問題,因為是windows 下,可以進行注冊表等其他信息的跨目錄讀取。
2.重新設置 session_save_path ,設置完成以后 重啟iis 看是否成功 如果不成功的話 請設置兩個,因為在php.ini中為了兼容以前的版本是有兩個的 一個是被注釋掉的 一個是 4.0以上 一個是5.0以上的。設置完成后,設置被設置的目錄為everyone 讀取 寫入,然后繼承,其他的都不要勾取,這樣就保證了保存目錄的安全和系統數據的安全。
3.和程序代碼有關系。
當看到設置的目錄中有session生成的時候,但是全部都是0kb的空文件,這時候需要進行檢查下代碼是否有問題。
解決方案:
1.如果開啟了session_auto的話 請關閉掉。然后在頁面中上方寫寫入 session_start
2.如果第一種方案無效的話,建議在session_start前面加上'@'符號,寫入頁面和讀取頁面都要加的。
4.其他問題,
如果以上原因還不可以進行處理的話,請檢查php文檔是否為當前加載的php文檔,wamp加載的php.ini在apache中,關於檢查當前php環境加載的php.ini的話 請關注后面的文章。
原文地址:http://my.oschina.net/u/574397/blog/143961