WordPress网站在Azure环境下无法使用SESSION?

本站所有文章均为博主人工写作,绝无AI辅助成分,请放心参阅。

今天又在刚从Linux搬到Windows Azure的WordPress网站们身上发现一个毛病,那就是自己写的SESSION都不起作用了。这直接导致了网站的登录功能没法使用。能支持PHP,我就不信Azure会连SESSION这种最基本的东西都不支持。搜索了一下相关问题,有的说要设置cache目录;还有说要修改web.config文件,加一堆XML节点…其实都在绕弯路,最后被我找到一个WP插件(好吧,我承认太没技术含量了Orz),名叫Simple Session Support。安装了一下这个插件问题就得到了解决,网站能正常登录,并且把用户信息读取到SESSION中了。

打开Simple Session Support插件的安装目录,原来只有一个php文件,而且很小。它提供了两个建立SESSION的函数,但都没有加到钩子里去。反而倒是有一个初始启动SESSION的小函数吸引了我的注意。原来在Azure下需要执行一下session_start()命令来才能开始使用SESSION。

所以可以不安装这个插件,直接把以下代码加到主题的function.php中,就能正常的使用$_SESSION[‘xxx’]变量来操作SESSION了:

1
2
3
4
add_action('init', 'my_session_start', 1);
function my_session_start() {
    if(!session_id())session_start();
}

纠结一下原因,其实是php.ini里面的一行配置在作怪

session.auto_start = 0

在AWS的环境下猜测session.auto_start默认设置为1,SESSION是默认自动开启的,因此可以直接操作SESSION。
在Windows环境下session.auto_start值是0,但在Azure里又没有系统盘和PHP安装目录的权限,所以必须手动用session_start()命令启动SESSION,才能进行接下来的操作。

本站所有文章均为原创,欢迎转载,请注明文章出处:https://blog.brain1981.com/746.html。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

关注我们的微信公众号-JennyStudio 本站记录了近几年的工作中遇到的一些技术问题和解决过程,“作品集”还收录了本人的大部分作品展示。除了本博客外,我们的工作室网站 – JennyStudio,内有更多作品回顾和展示。
您也可以扫描左边的二维码,关注我们的微信公众号,在微信上查看我们的案例。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注