溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Windows下Apache + PHP SESSION丟失的慘痛經(jīng)歷

發(fā)布時(shí)間:2020-09-14 19:28:34 來源:網(wǎng)絡(luò) 閱讀:338 作者:qingspace 欄目:web開發(fā)

今天的工作是遷移一個(gè)PHP站點(diǎn)至新服務(wù)器。

創(chuàng)建一臺(tái)Windows Server 2008虛擬機(jī),并在其上停掉net stop http服務(wù)(避免爭搶80端口),安裝配置 Apache + PHP,遷移站點(diǎn)至新服務(wù)器,站點(diǎn)正常打開,Apache + PHP運(yùn)行正常,連接MySql Server正常,一切都美好,本想著半小時(shí)完成的工作,緊接著噩夢開始了。

該站點(diǎn)使用單點(diǎn)登錄,登錄過程包含JavaScript異步操作,包含SOAP調(diào)用Web Service。登錄卻直接跳回了登錄頁面,沒有任何錯(cuò)誤提示,考慮了以下可能:

1、是賬戶異常?在其他系統(tǒng)測試,賬戶狀態(tài)正常。

2、是JavaScript異步操作失敗?用IE開發(fā)人員工具跟蹤Javascript返回值,返回值正常。

3、是Web Service調(diào)用失???用Fiddler跟蹤Web Service的返回值,表明已經(jīng)驗(yàn)證成功,已經(jīng)完成本地登錄。

反復(fù)跟蹤調(diào)試,才開始懷疑該站點(diǎn)SESSION丟失了:

1、JavaScript異步操作設(shè)置SESSION失敗,難道是因?yàn)橥皆L問和異步訪問的SESSION ID是不同造成的?這在Flash中進(jìn)行異步調(diào)用才出現(xiàn)過,JavaScript也會(huì)嗎?輸出同步訪問和異步訪問的SESSION ID值是一樣的。

2、建2個(gè)PHP測試頁面,在一個(gè)頁面中設(shè)置SESSION,在另一個(gè)頁面中卻讀不到。檢查php.ini相關(guān)設(shè)置,看起來是正常的,查看session.save_path = "C:/php/tmp"路徑,卻果真沒有SESSION相關(guān)的文件,設(shè)置連tmp目錄都沒有。

結(jié)局令人啼笑皆非,沒有tmp目錄,PHP無法寫入SESSION文件,自然SESSION就丟失了。為什么沒有tmp目錄,因?yàn)榘惭b包里沒有……我的3小時(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI