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

在本地用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文件是否有读写权限。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,954评论 25 709
  • 高群站在那里见他慢慢的逼了过来,不屑的说:”你不就是前不久,偷我们家门前地下井盖的那个人吗?”说时想到什么好笑的事...
    魔戒黑道的小黑阅读 328评论 0 1
  • 从前自己成绩不错,学习也比较努力。虽然偏科偏得厉害。但是我的优势科目很多,完全无所谓。曾经以为学习是我生活的全部意...
    一只有秘密的猫阅读 196评论 1 0
  • 正襟危坐、秉笔凝息是读书,树下湖边、卧卷傲立是读书,锦榻胡床、斜支漫翻也是读书。今晨先是在书桌前看了半个小时的黑塞...
    森书阅读 1,231评论 6 1