使用Docker部署Sendy时安装异常问题求助
Docker部署Sendy安装后无法登录问题排查与解决
问题现象
- 成功访问Sendy安装页面,填写信息点击「下一步」后仅页面刷新,表单内容清空
- 数据库已生成6张空表:
apps、campaigns、links、lists、login、subscribers - 访问主URL显示登录页,但安装时填写的账号密码提示「密码错误或用户不存在」
- Portainer日志无异常
- 手动向
login表添加邮箱后,重置密码提示「邮箱不存在」 - 升级VPS内存(原占用80%)后问题依旧
- 尝试手动插入密码哈希值(
a5b253d8484925a3b4fba260768416dfdcbeaed639bb3435c566cbf54721f846903725c7283cf9ab1f090f179d015f46a50b5e798695547eda6e2342db8918a2对应密码12345678)及许可证密钥,无效 - 删除所有数据库表后刷新页面,重新显示安装页;服务器兼容性检查全部为绿色
排查与解决步骤
1. 验证数据库权限与连接有效性
- 确认Sendy容器使用的数据库用户拥有CREATE、INSERT、UPDATE、DELETE全权限,不要仅授予建表权限
- 进入Sendy容器,检查
/var/www/html/config.php中的数据库参数:- 主机地址需为数据库容器的服务名或IP(Docker网络内不要用
localhost) - 数据库名、用户名、密码需与实际配置完全匹配
- 主机地址需为数据库容器的服务名或IP(Docker网络内不要用
- 手动测试数据库写入:执行以下命令插入测试用户,再查询是否成功
如果插入失败,查看数据库容器的错误日志定位问题mysql -h [DB_HOST] -u [DB_USER] -p[DB_PASS] [DB_NAME] INSERT INTO login (email, password, license_key) VALUES ('test@example.com', 'a5b253d8484925a3b4fba260768416dfdcbeaed639bb3435c566cbf54721f846903725c7283cf9ab1f090f179d015f46a50b5e798695547eda6e2342db8918a2', 'your_license_key'); SELECT * FROM login;
2. 检查PHP Session配置与权限
- Sendy依赖Session存储安装状态,进入容器执行以下命令检查Session配置:
php -i | grep session - 确认
session.save_path存在且可写,若路径权限异常,执行以下命令修复:mkdir -p /var/lib/php/sessions chown www-data:www-data /var/lib/php/sessions chmod 700 /var/lib/php/sessions
3. 查看Web服务请求日志
- 开启容器内Apache/Nginx的访问与错误日志:
- Apache日志路径通常为
/var/log/apache2/access.log和error.log - Nginx日志路径通常为
/var/log/nginx/access.log和error.log
- Apache日志路径通常为
- 查看安装表单提交时的请求状态,重点排查
500 Internal Server Error或403 Forbidden,对应查看错误日志中的PHP报错(如内存限制、函数禁用等)
4. 匹配密码哈希算法
- 确认Sendy使用的哈希算法与你手动生成的一致,在容器内执行以下命令生成标准哈希值:
php -r "echo hash('sha512', '12345678'); echo PHP_EOL;" - 将生成的哈希值与你使用的对比,确保算法完全匹配后再插入数据库
5. 检查Docker网络连通性
- 确认Sendy容器与数据库容器在同一Docker网络内,执行以下命令验证网络连通:
docker exec -it [sendy_container_name] ping [db_container_name] - 若不通,将两个容器加入同一自定义网络,避免默认网络的隔离问题
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

