ThinkPHP 與原生 PHP 一樣,解決 Session 跨域關鍵在於設置 session.cookie_domain。根據項目是否啟用 URL 重寫(.htaccess),有兩種不同的配置位置。
在 conf/config.php 第一行 添加:
ini_set('session.cookie_domain', '.domain.com'); // 跨域訪問 Session
缺點: 開啟調試模式可能生效,關閉調試後可能失效。
在入口文件 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();
優勢: 無論是否開啟調試模式,均可穩定生效。
.domain.com 開頭的點表示包含所有子域名(如 a.domain.com、b.domain.com)index.php.domain.com 導致主域無法讀取子域 Cookieindex.php 頭部設置,兼容性最強session.save_handler 與 session.save_path