WysiwygPro编辑器在CENTOS 8上点击控件提示会话过期错误如何解决
错误提示原文:Your editing session has expired. This is usually caused by a long period of inactivity. Please re-load the page.
问题成因
该问题核心是CentOS 8默认PHP环境的会话Cookie配置与旧版WysiwygPro编辑器的加载逻辑不兼容,具体原因如下:
- CentOS 8默认内置的PHP版本为7.2及以上,该版本开始新增了
session.cookie_samesite配置项,默认值为Lax。该配置会限制Cookie在iframe内嵌请求、跨站请求中的携带行为。 - WysiwygPro的Image、Media等控件均通过iframe内嵌的方式加载编辑界面,
Lax级别的SameSite规则会阻止iframe请求携带当前站点的会话Cookie,后端无法读取到有效会话就会返回会话过期的错误提示。 - CentOS 6/7默认的PHP版本低于7.3,没有默认启用SameSite配置,会话Cookie可以正常被iframe请求携带,因此不会触发该问题。
- 小概率由SELinux限制导致:CentOS 8默认开启SELinux,若httpd进程没有读取会话目录的权限,也会触发会话校验失败的问题。
解决方案
可按优先级任选以下方案修复:
方案1:修改全局PHP配置(适用所有站点)
- 编辑php.ini配置文件,路径通常为
/etc/php.ini或者/etc/php-fpm.d/www.conf(部分编译安装环境路径可能不同) - 找到
session.cookie_samesite配置项,按站点协议修改对应规则:- 站点使用HTTP协议:将值设置为空字符串
session.cookie_samesite = "" - 站点使用HTTPS协议:可以设置为
None同时开启安全Cookiesession.cookie_samesite = "None" session.cookie_secure = On
- 站点使用HTTP协议:将值设置为空字符串
- 保存配置后重启对应服务:
- 若用Apache运行PHP:执行
systemctl restart httpd - 若用PHP-FPM模式:执行
systemctl restart php-fpm
- 若用Apache运行PHP:执行
方案2:单独修改调用WysiwygPro的页面配置(不影响其他站点)
在加载WysiwygPro编辑器的PHP页面最顶部,添加以下代码即可:
// HTTP环境使用该配置 ini_set('session.cookie_samesite', ''); // HTTPS环境使用该配置 // ini_set('session.cookie_samesite', 'None'); // ini_set('session.cookie_secure', 1);
小概率SELinux问题修复
若上述配置修改后仍未解决,可临时关闭SELinux验证:执行setenforce 0,如果问题消失则说明是SELinux权限问题,可执行setsebool -P httpd_unified 1修复后再重新开启SELinux即可。
配置修改完成后清空浏览器Cookie和缓存,重新加载页面即可验证修复效果。
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

