今天又在刚从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。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。
您也可以扫描左边的二维码,关注我们的微信公众号,在微信上查看我们的案例。