star7th / showdoc

ShowDoc is a tool greatly applicable for an IT team to share documents online一个非常适合IT团队的在线API文档、技术文档工具
https://www.showdoc.com.cn
Other
12.16k stars 2.18k forks source link

迁移到 Alpine Linux 服务器后,登陆的时候一直提示“验证码不正确” #2227

Open gdtv opened 1 month ago

gdtv commented 1 month ago

您好, 近日我将原本运行在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是没问题的。

star7th commented 1 month ago

看样子你是有php开发基础的。那我跟你讲下技术排查方式。 你用数据库浏览工具打开 showdoc.db.php , 每次生成的验证码会放在captcha表。 你观察下该表的验证码跟实际上是否存在哪里不一致。比如说,如果总是快速生成两条,是不是有可能绑定域名或者什么东西触发了两次请求。

gdtv commented 1 month ago

看样子你是有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

star7th commented 1 month ago

captcha_id返回false的话,感觉有点像插入数据库失败。确保有读写权限

star7th commented 1 month ago

不过我确实没测试过这么高版本的php的兼容性。要不试下低版本或者使用docker镜像看看

star7th commented 1 month ago

好像也不合理。如果captcha_id返回false的话,应该验证码都不能正常展示。因为展示验证码是必须要传递captcha_id的。 你把你的网址发我看看

gdtv commented 1 month ago

好像也不合理。如果captcha_id返回false的话,应该验证码都不能正常展示。因为展示验证码是必须要传递captcha_id的。 你把你的网址发我看看

抱歉我是在内网测试的,公网访问不了。

没有captcha_id是可以显示验证码的,如图:

屏幕截图 2024-07-09 152510

我用 adminer(https://www.adminer.org/) 测试,这个 showdoc.db.php 数据库是可以写入的。

我试过用docker安装没问题,但是docker比较耗费资源,我用apline就是想省点资源。

等我有空了,我试试在Alpine安装低版本的php测试下,或者在debian安装高版本的php测试下。

谢谢。