關於PHP集成環境session_start出現錯誤的問題


session_start()大家一定很熟悉,它的使用方便我們不用Cookie就可以記錄用戶的相關狀態。今天我在安裝一個程序,居然出現了錯誤,原因是我的集成環境的問題。我用的是APMServ 5.2.6這個集成環境的,運行程序后出現了:

1
2
3
Warning :  session_start ( )  [ function .session -start ] : open_basedir restriction in effect .  File (C :\WINDOWS\TEMP\ ) is not within the allowed path (s ) :  (F :/APMServ5 .2 .6 /www /htdocs /zzw .la /;F :/APMServ5 .2 .6 /tmp /uploadtemp /; ) in F :\APMServ5 .2 .6\www\htdocs\zzw .la\ include\common .php on line  77

Fatal error: session_start() [<a href='function.session-start'>function.session-start</a>]: Failed to initialize storage module: files (path: ) in F:\APMServ5.2.6\www\htdocs\zzw.la\include\common.php on line 77

仔細一看,原來是session_start()出錯了。原來環境中配置的目錄是在:

1
X :\APMServ5 .2 .6\tmp\sessiondata

提示上卻說是的C:\WINDOWS\TEMP這個目錄沒權限。這是因為我們的WEB用戶每權限寫入這個目錄。那現在怎么辦呢,看看PHP.INI這個配置文件,依然沒找到設置session的目錄,那如何修改這個目錄啊,保證能正常讀寫呢?

上網查查,結果很多結果不能讓人滿意。都說的似是而非的。但是思路卻有了,我們可以指定一個目錄,在當前腳本里。這樣,一定有訪問權限的。
以我的錯誤為例,錯誤是common.php文件中的77行出錯。看一下77行的代碼:

1
2
session_start ( ) ;
$group_info  = cache_read ( 'group_' . ( isset ( $_SESSION [ 'group_id' ] )

那我們可以在這個腳本里加上一行代碼,指定我們的SESSION緩存目錄。我們可以這么做:

1
ini_set ( 'session.save_path' ,  dirname ( __FILE__ ) . '/../dirname/' ) ;

dirname自己定義,這樣就不會出現上述錯誤了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM