美文网首页
thinkphp验证码在服务器提示“验证码错误”

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

作者: laotoutou | 来源:发表于2016-11-23 00:25 被阅读318次

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

    相关文章

      网友评论

          本文标题:thinkphp验证码在服务器提示“验证码错误”

          本文链接:https://www.haomeiwen.com/subject/ozoppttx.html