【发布时间】:2018-04-14 04:05:11
【问题描述】:
我目前正在尝试与 Yii2 应用程序一起运行 Craft 应用程序。我在正确的时间启动了正确的应用程序,但遇到了会话编写问题。
我正在将会话写入本地文件(默认 apache2 文件)。
由于某种原因,当我尝试在我的 Yii2 应用程序中使用 $_SESSION['something'] = 'test'; 向会话添加变量时,它在应用程序关闭的那一刻变得不可用。
我正在向 Yii2 中的会话添加这个“东西”键,并在大约 3 秒后尝试访问我的 Craft 应用程序中的会话变量。
知道为什么这个会话变量会丢失吗?如果我在从 Yii2 应用程序返回之前打印出 $_SESSION 它就在那里,但是在我的操作完成执行后它会从会话中丢失?
我的控制器完成执行的方式是这样的:
//Setup for the return of JSON.
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
header('Content-type: application/json');
$returnData = self::filterOutSensitiveResponseInfo($returnData);
//Get timeouts for the front-end.
$returnData = [
"responseData" => $returnData
];
//Handle logging of the return from controller.
if(self::includeCurrentActionInLogs()){
self::logActionTiming();
self::logActionResponse($returnData);
}
//output JSON to the front-end.
echo json_encode($returnData, JSON_PRETTY_PRINT);
//Handle successful shutdown of the application.
\Yii::$app->end();
return;
执行完这段代码后,我会立即调用另一个控制器操作并查看 $_SESSION 但我之前存储的那个变量不再存在?
编辑:: 我认为问题出在这些设置上::
session.cooke_secure ON
session.name = CraftSessionId
session.cookie_httponly ON
^ 这些是 CraftCMS 的设置
session.cooke_secure OFF
session.name = PHPSessionId
session.cookie_httponly OFF
^ 这些是 Yii2 的设置。
如何更改这些设置以匹配 Craft?
【问题讨论】:
标签: php session yii yii2 yii2-basic-app