php啟動session失敗錯誤解決辦法
php啟動session失敗錯誤原因應該是:php.ini中,有關session部分的設置存在錯誤,引發session cookies無法發送和保持。
排查步驟:
1、將以下文字保存為phpinfo.php,并上傳到服務器要可以訪問,比如本站http://www.hjaa.net/phpinfo.php
<?php
phpinfo();
?>
重點關注session部分
2、session.cookie_domain設置了A域名,即session.cookie_domain = A域名結果導致session cookies在B域名失效。
解決辦法1:將php.ini中的session.cookie_domain設置為空,即:session.cookie_domain =
解決辦法2:session.cookie_domain =設置成你使用的域名
3、php.ini中,session.cookie_path設置過于嚴格。比如設置為:session.cookie_path = /hjaa/也就是說只允許根域名下面的hjaa目錄和子目錄才能使用session(更確切來講,如果session.cookie_domain設置了A域名,則表示A域名下的hjaa目錄和子目錄才允許使用session)
解決辦法:將php.ini中的session.cookie_path設置為“/”(不含雙引號)或者你認為的更加寬松的安全設置,比如: session.cookie_path = /
4、php.ini中,將session.cookie_path和session.save_path兩者搞混,以為session.cookie_path是表示session臨時文件存儲的路徑。但實際上session.cookie_path是表示session生效的網站域,和服務器的文件權限無關;session.save_path才是設置session臨時文件存儲的路徑。比如將session.cookie_path設置為:session.cookie_path = C:/WINDOWS/TEMP從而引發故障。
5、session.save_path設置的目錄沒有寫權限;或者設置不正確(比如設置的文件夾根本不存在)。請注意:如果為空,則表示使用默認的系統臨時文件夾路徑。windows一般為“%SystemRoot%\TEMP”,unix一般為“/tmp”
解決辦法:
(1)、如果session.save_path不留空,請確認該設置值對應的確實是一個文件夾、并且該文件夾存在。如果確實不知道如何設置,請注釋此設置、或者改為空值,讓php使用默認設置。
(2)、在對應目錄中,給予相應用戶的寫權限比如對于IIS,應給予Internet來賓賬戶的寫權限。
6、當session.auto_start = on時,執行 session_start() 將產生新的 session_idsession.auto_start = on 的優點在于,任何時候都不會因忘記執行 session_start() 或 session_start() 在程序里的位置不對,而導致錯誤缺點在于,如果你使用的是第三方代碼,則必須刪去其中的全部 session_start() 。否則將不能得到正確的結果
解決辦法:
(1)session.auto_start = Off
(2)把程序中的session_start();去掉
web開發網 http://www.software8.co/wzjs/PHPshili/2084.html
web開發網 http://www.software8.co/wzjs/PHPshili/2084.html