php中session无法保存的解决方案以及如何修改php默认Session存储目录

今天在学习php的session功能使用的时候,出现了个小问题,程序在本地测试完全正常,但是一发布到服务器上就保存不了session。经过百度搜索得知,原来是session存储目录的问题,下面就让我们一起来看看具体的情况是怎么样的。


本机的测试环境是windows 8.1 + nginx 1.11.8 + php 7.1

服务器环境是centos 7 + nginx 1.11.8 + php-fpm 2.4 + php 5.4.16


产生的问题:本机测试session设置后,跳转到另一个页面,然后读取session

正常情况:可以正确的读取到session的值

异常情况:读取不到session的值,且判断出该session并不存在,说明session没有保存成功


解决思路:先在服务器上使用phpinfo()查看session的保存目录

从上图可以看到session的默认保存目录是/var/lib/php/session,然后我们打开php.ini配置文件(linux下我的配置文件在/etc/php.ini),打开后找到session.save_path配置,结果发现这个配置是session.save_path = "/tmp"



这就奇怪了,为什么配置文件里面是/tmp目录,而phpinfo里面显示的又是/var/lib/php/session呢?经过百度的搜索,终于查到了答案,原来是php-fpm的问题。


打开php-fpm的配置文件/etc/php-fpm.d/www.conf可以看到里面有一个配置项



原来是php-fpm里面设置了session的保存目录,难怪了。那么现在知道了session的默认目录在哪里设置了,但是还没有解决无法保存session的问题啊?


下面我们进入到/var/lib/php/session看看。


咦,提示目录不存在。难怪保存不了session了。下面我们新建一个session目录

mkdir session


再试。。结果提示没有权限,那下面问题就简单了吧。直接给session目录赋值777

chmod -R 777 *


然后再试。。搞定了。。可以正常保存session的值了。


下面我们来总结一下今天搞了什么问题:

1、找出了session默认目录在哪里修改

2、解决了session无法保存的原因和解决方法


  1. 本网站所收集的部分资料来源于互联网,本站不对其真实性负责,也不构成任何其他建议。如果您发现有侵犯您权益的内容,请与我们取得联系,我们会及时修改或删除。
  2. 传递知识、传递力量,欢迎各位网友对本站的文章进行转载和分享。
  3. 本站QQ群交流群:904314688  群号:904314688
发表评论
 
评论列表(目前共有 条评论)
暂时还没有评论哦~

文章搜索

商家广告


版权所有:秋风雅居 (www.198933.com) ©2024 All Rights Reserved.

粤ICP备20031662号