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