迁移到 Alpine Linux 服务器后,登陆的时候一直提示“验证码不正确”
您好, 近日我将原本运行在debian服务器上的showdoc迁移到了Alpine Linux 服务器,迁移方法是: 在Alpine Linux 服务器手动安装apache2 php php-apache2 php-gd等。 将所有文件从旧服务器复制到新服务器。 新服务器上所有文件属主设置为 apache(即apache2运行的用户),权限设置为777。 在浏览器打开网址,输入账号、密码、验证码,点击登录,一直提示“验证码不正确”。
另外,删除所有旧文件,只保留 showdoc.db.php ,然后下载新版本的showdoc源文件上传 ,然后不行。
已检查php对session.save_path有写入权限,磁盘没有满。
另写一个简单的php页面测试php对session的操作:
<?php
session_start();
$_SESSION['aaa'] = '12345';
<?php
session_start();
echo $_SESSION['aaa'];
测试结果php读、写session是没问题的。
看样子你是有php开发基础的。那我跟你讲下技术排查方式。 你用数据库浏览工具打开 showdoc.db.php , 每次生成的验证码会放在captcha表。 你观察下该表的验证码跟实际上是否存在哪里不一致。比如说,如果总是快速生成两条,是不是有可能绑定域名或者什么东西触发了两次请求。
看样子你是有php开发基础的。那我跟你讲下技术排查方式。 你用数据库浏览工具打开 showdoc.db.php , 每次生成的验证码会放在captcha表。 你观察下该表的验证码跟实际上是否存在哪里不一致。比如说,如果总是快速生成两条,是不是有可能绑定域名或者什么东西触发了两次请求。
谢谢回复。 我使用从这里下载的源代码全新安装后测试: https://github.com/star7th/showdoc/releases
访问登录页面后,图形验证码能显示出来,但是数据库captcha表是空的。
登录页面post请求 /server/index.php?s=/api/common/createCaptcha ,返回的是 {"error_code":0,"data":{"captcha_id":false}}
这台服务器上面有另一个php+sqlite3的网站,php操作sqlite3是正常的。
php版本: 8.3.9 php-sqlite3版本: 3.45.3
captcha_id返回false的话,感觉有点像插入数据库失败。确保有读写权限
不过我确实没测试过这么高版本的php的兼容性。要不试下低版本或者使用docker镜像看看
好像也不合理。如果captcha_id返回false的话,应该验证码都不能正常展示。因为展示验证码是必须要传递captcha_id的。 你把你的网址发我看看
好像也不合理。如果captcha_id返回false的话,应该验证码都不能正常展示。因为展示验证码是必须要传递captcha_id的。 你把你的网址发我看看
抱歉我是在内网测试的,公网访问不了。
没有captcha_id是可以显示验证码的,如图:
我用 adminer(https://www.adminer.org/) 测试,这个 showdoc.db.php 数据库是可以写入的。
我试过用docker安装没问题,但是docker比较耗费资源,我用apline就是想省点资源。
等我有空了,我试试在Alpine安装低版本的php测试下,或者在debian安装高版本的php测试下。
谢谢。
好像也不合理。如果captcha_id返回false的话,应该验证码都不能正常展示。因为展示验证码是必须要传递captcha_id的。 你把你的网址发我看看
抱歉我是在内网测试的,公网访问不了。
没有captcha_id是可以显示验证码的,如图:
我用 adminer(https://www.adminer.org/) 测试,这个 showdoc.db.php 数据库是可以写入的。
我试过用docker安装没问题,但是docker比较耗费资源,我用apline就是想省点资源。
等我有空了,我试试在Alpine安装低版本的php测试下,或者在debian安装高版本的php测试下。
谢谢。
我也遇到了,换成7.0版本就能写入sqllite了
谢谢大家回复,最后我换成debian了。
是不是sqlite3, pdo_sqlite, gd 这3个扩展有一个没装。我试过 没装 pdo_sqlite 所以没有captcha_id。
