這幾天用TP做項(xiàng)目,突然發(fā)現(xiàn)session無(wú)法使用了,在一個(gè)控制器里設(shè)置的session值,然后在另一個(gè)控制器里無(wú)法調(diào)用,糾結(jié)啊.
不知道哪里的問(wèn)題,各種方法都試過(guò)了就是不行,最終在網(wǎng)上查了一下,也有人遇到過(guò)這樣的問(wèn)題,最終想到了一個(gè)最古老的解決方法,那就是修改php.ini文件,沒(méi)辦法只能死馬當(dāng)活馬醫(yī)了,結(jié)果還真行,雖然這個(gè)方法有些安全隱患但這也是沒(méi)有辦法的辦法了.
1,查找c:/windows目錄下php.ini文件
2,修改php.ini中的session.auto_start = 0 為 session.auto_start = 1 //設(shè)置自動(dòng)開(kāi)啟session
3,重啟apache服務(wù)器 //我只修改了上邊一處就可以用了如果不行的話,就執(zhí)行下邊第4步
4,修改php.ini中的session.save_path = "C:/tmp",將前邊的;去掉 //修改session的保存路徑,自動(dòng)建立tmp文件夾
session 跨域,困擾我好幾天,今天終于弄明白了,不管是thinkphp,還是本身的php,其實(shí)都要設(shè)置session.cookie_domain,設(shè)置好,就OK了,在thinkphp 里,在配置文件里:
conf/config.php
第一行:加 ini_set('session.cookie_domain', ".domain.com");//跨域訪問(wèn)Session
別的不用框架的一樣,以下又是我這幾天總結(jié)的,session 跨域解決辦法,本人已親自測(cè)試成功,并已運(yùn)用到自己的網(wǎng)站!
第一種情況:如果你目錄下沒(méi)有.htaccess這個(gè)文件,也就是沒(méi)有采取url偽靜態(tài)2的話,那么,你在conf/config.php
第一行加上:ini_set('session.cookie_domain', ".domain.com");//跨域訪問(wèn)Session
這種如果你開(kāi)啟了調(diào)試,可能用,但關(guān)閉了調(diào)試,可能就不管用了!
第二種情況:如果你目錄下有.htaccess這個(gè)文件,那么你在根目錄,index.php的第一行加入:
- <?php
- ini_set('session.cookie_domain', ".domain.com");//跨域訪問(wèn)Session
- // 定義ThinkPHP框架路徑
- define('THINK_PATH', '../ThinkPHP/');
- //定義項(xiàng)目名稱和路徑
- define('APP_NAME', 'Www');
- define('APP_PATH', '.');
- // 加載框架入口文件
- require(THINK_PATH."/ThinkPHP.php");
- //實(shí)例化一個(gè)網(wǎng)站應(yīng)用實(shí)例
- App::run();
- ?>
新聞熱點(diǎn)
疑難解答
圖片精選