【发布时间】:2019-04-25 22:09:41
【问题描述】:
我从 php 7.0 切换到 7.2。更改后,第一个“=>”之后的代码作为文本输出到我的页面。
修改文本,删除部分数组,完全删除 session_start 中的数组。所做的只是将问题移到下一个“=>”
<?
$file = __FILE__;
if (empty($_COOKIE['PHPSESSID'])) {
header('HTTP/1.0 403 Forbidden');
$level = 'Security';
$errorMessage = "[{$file}] [{$level}] Session cookie not passed".PHP_EOL;
error_log($errorMessage);
die();
} else {
session_id($_COOKIE['PHPSESSID']);
}
session_start([
'gc_maxlifetime' =>3600,
'use_strict_mode' =>1,
'use_only_cookies' =>1,
'cookie_lifetime' =>604800,
'cookie_secure' =>1,
'cookie_httponly' =>1
]);
//'cookie_samesite' =>1 add in after php 7.3
我预计会话会开始并且 php 会完成。和php 7.0下一样
发生的情况是代码运行到第一个“=>”。此时它输出 "3600,'use_strict_mode'=>1, .... 以 "?>" 结束
在 apache2 错误日志中,我得到一个“未定义的变量:_SESSION in .....”,这表明会话从未开始。没有显示其他错误。
【问题讨论】:
-
尝试在开始会话之前创建一个数组,使用“=”分配每个键。会话仍未创建,但文本未输出。