thinkphp验证码在服务器提示“验证码错误”

2016-11-23  本文已影响318人  laotoutou

在本地用thinkphp的验证码扩展测试没问题,放到Linux服务器之后,总是提示验证码错误,以下是我的解决方案,希望能帮到其他人

thinkphp的验证码原理就是后端生成验证码,在前端将验证码显示出来,至于前端和后端的验证比较,是后端生成的验证码加密后通过session传递。

本地正常使用,放到服务器无法使用,肯定不是代码的问题,应该是是服务器的问题,而且很有可能是session出问题了。

至于具体原因因人而异,我是因为 PHP通过外部命令函数执行shell脚本时一些特殊命令需要root权限,所以之前配置更改过PHP的执行用户而导致session不可用。

首先确认你session文件的存放位置,然后确认地址存在,并且PHP的执行用户对该文件夹有权限。网上有一种说法是修改PHP的配置文件中的 session.save_path的值,然而我没改明白~,我是直接查了当前session文件的位置,然后修改文件夹所有者或直接修改文件夹权限。

通过在服务器运行以下代码查看session文件的存放位置:
原文链接

$sessionpath = session_save_path();  
if (strpos ($sessionpath, ";") !== FALSE)  
  $sessionpath = substr ($sessionpath, strpos ($sessionpath, ";")+1);  
  
//获取当前session的保存路径  
echo $sessionpath;

这样就得到了你的session文件的具体位置,然后去查看该文件夹是否存在以及文件夹的权限问题。

附:通过在服务器执行以下代码查看PHP的执行用户(一般为apache或nobody)

system("whoami");

这样输出的就是你PHP的执行用户,然后再看该用户对以上输出的session文件是否有读写权限。

上一篇下一篇

猜你喜欢

热点阅读