技术实践
服务器在查询session的接口全部挂掉
昨日(2020年11月14日),访问小程序、网站、全栈导航,发现了部分接口抛出服务器异常

描述
昨日(2020年11月14日),访问小程序、网站、全栈导航,发现了部分接口抛出服务器异常

昨日加班量,只有在下班修复了

打开app_debug模式
本地调试windows
本地调试没有发现任何异常,因为本地是windows环境
线上linux
打开调试抛出
php
session_name(): Cannot change session name when session is active
谷歌一番,有说是
PHP7.2出现的一个警告 目前没有具体的修复方法
出现故障环境 linux php7.2 nginx
本人解决方法为 将session全部换为cookie 项目运行成功
stackoverflow回答
PHP 7.2 Warning: “Cannot change session name when session is active”
大部分说是,PHP 7.2引入所带来的一个问题
找了一圈没有有找到想要的答案,重启试一下
c++
// 重启服务器
shutdown -r now
// 启动docker
systemctl restart docker
// 启动容器,nginx,mysql ...
docker-compose start
// 单个启动
docker-compose nginx start
再次刷新,发现好了,why,没搞懂
我尝试清理了,runtime目录
删除文件
c++
rm -rf 目录名字
创建文件
c++
mkdir 名字
查看当前路经
c++
pwd
当删除暴露了一个问题
php
session_start(): open(/xxxxx/xxxx/runtime/temp//xxxxxxxxxxxxxx, O_RDWR) failed: Permission denied (13)
这是一个目录权限问题
设置读,写,执行权限
c++
chmod 777 /xxxx/runtime
chmod命令:
c++
chmod 用3个数字来表达对 用户(文件或目录的所有者),用户组(同组用户),其他用户 的权限:
如:chmod 777 /test
数字7是表达同时具有读,写,执行权限:
读取--用数字4表示;
写入--用数字2表示;
执行--用数字1表示;
按照规则,如你想设置/test目录的权限为:
对用户可读可写:4(读取)+ 2(写入)= 6 ;
对用户组可读可执行:4(读取)+ 1(执行)= 5 ;
对其他用户仅可读:4(读取);
这样就可以用命令:
chmod 654 /test
顺利解决这个问题
总结
在对tp5的session的这个模块,在次研究下,不过看新版tp6已经对session和cookie重新设计了,难道是之前tp5存在遗留bug