Files
AIclinicalresearch/redcap-docker-dev/config/database.php
HaHafeng 38d9bf99d6 feat(redcap): REDCap 15.8.0 Docker本地开发环境部署完成
核心成果:
- REDCap 15.8.0成功部署在Docker环境
- 登录功能正常,管理员账户: Admin/Admin123!
- MySQL 8.0 + PHP 8.1 + Apache 2.4环境验证通过

问题解决:
1. 修复ERR_CONTENT_DECODING_FAILED错误
   - 强制禁用Apache deflate模块
   - PHP配置关闭zlib.output_compression
   - 自动注释REDCap源码中的压缩设置

2. 修复Base URL配置错误
   - 更新redcap_config表中的redcap_base_url
   - 统一DocumentRoot与访问路径

3. 修复登录失败问题(CRLF污染)
   - 删除database.php末尾的PHP结束标签
   - 创建.gitattributes规范换行符
   - 验证REDCap官方源码无此问题

技术改进:
- 添加密码重置工具脚本
- 完善docker-entrypoint.sh启动脚本
- 创建详细的部署问题解决记录
- 建立PHP配置文件最佳实践

部署文档:
- REDCap本地Docker开发环境部署方案
- REDCap生产环境部署决策报告(ECS vs SAE)
- 部署问题解决记录(含根因分析)

下一步:
- Day 2: 开发REDCap API Adapter
- 实现与IIT Manager Agent的数据对接
2026-01-02 10:02:46 +08:00

138 lines
4.6 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* REDCap数据库连接配置
* 版本v1.0
* 日期2026-01-01
* 适用Docker开发/测试/生产环境
*
* 重要说明:
* 1. 此文件需要复制到REDCap源码的redcap/目录下
* 2. 开发环境使用Docker MySQL容器
* 3. 生产环境应使用阿里云RDS MySQL
* 4. Salt值一旦设置永远不可更改
*/
// ========== 错误日志配置 ==========
global $log_all_errors;
$log_all_errors = TRUE; // 开发环境开启详细日志生产环境改为FALSE
// ========== MYSQL DATABASE CONNECTION ==========
// Docker容器内连接配置
// 注意容器服务名不是localhost
$hostname = 'redcap-db'; // Docker Compose服务名开发环境
// 生产环境改为rm-xxx.mysql.rds.aliyuncs.com
$db = 'redcap'; // 数据库名
// 生产环境可能是redcap_prod
$username = 'redcap_user'; // 数据库用户名
// 生产环境使用RDS创建的用户
$password = 'redcap_pass_dev_456'; // 数据库密码
// ⚠️ 生产环境必须修改为强密码!
// ========== SSL/TLS连接可选生产环境推荐 ==========
// 阿里云RDS支持SSL连接增强安全性
$db_ssl_key = ''; // e.g., '/etc/mysql/ssl/client-key.pem'
$db_ssl_cert = ''; // e.g., '/etc/mysql/ssl/client-cert.pem'
$db_ssl_ca = ''; // e.g., '/etc/mysql/ssl/ca-cert.pem'
$db_ssl_capath = NULL;
$db_ssl_cipher = NULL;
$db_ssl_verify_server_cert = false; // 生产环境可设为TRUE
// ========== SALT VARIABLE 极其重要!) ==========
/**
* Salt值用于REDCap数据导出时的去标识化哈希
*
* 重要规则:
* 1. ⚠️ 一旦设置,永远不可更改!
* 2. 修改会导致历史去标识化数据无法解密
* 3. 必须妥善备份(丢失会导致数据无法恢复)
*
* 开发环境建议:
* - 使用固定的Salt值便于重建环境
* - 至少8个字符建议20+字符
*
* 生产环境要求:
* - 必须使用强随机Salt32+字符)
* - 包含大小写字母、数字、特殊字符
* - 生成方法:
* PowerShell: -join ((65..90) + (97..122) + (48..57) + (33..47) | Get-Random -Count 32 | % {[char]$_})
* Linux/Mac: openssl rand -base64 32
*/
// 开发环境Salt
$salt = 'iit_dev_salt_2026_redcap_v15_do_not_change';
// 生产环境Salt示例必须修改
// $salt = 'Your_Strong_Random_Salt_32_Chars_Min_With_Special_Chars_!@#$%';
// ========== DATA TRANSFER SERVICES (DTS) ==========
// 如使用REDCap DTS功能取消下方注释并配置
// DTS用于多个REDCap实例之间的数据传输
// $dtsHostname = 'your_dts_host_name';
// $dtsDb = 'your_dts_db_name';
// $dtsUsername = 'your_dts_db_username';
// $dtsPassword = 'your_dts_db_password';
// ========== 外部数据库连接(可选,替代默认配置) ==========
// 如需将数据库配置放在外部文件(安全考虑),取消下方注释
// 外部文件应放在Web根目录之外无法通过HTTP访问
// include '/path/outside/web/root/db_conn_file.php';
// ========== 配置验证(开发环境调试用) ==========
// 开发环境可以启用此段代码验证配置
// 生产环境必须删除或注释此段代码!
if (FALSE) { // 调试时改为TRUE
echo "=== REDCap Database Configuration ===\n";
echo "Hostname: $hostname\n";
echo "Database: $db\n";
echo "Username: $username\n";
echo "Password: " . str_repeat('*', strlen($password)) . "\n";
echo "Salt Length: " . strlen($salt) . " characters\n";
echo "=====================================\n";
// 测试数据库连接
$test_conn = @mysqli_connect($hostname, $username, $password, $db);
if ($test_conn) {
echo "✅ Database connection successful!\n";
mysqli_close($test_conn);
} else {
echo "❌ Database connection failed: " . mysqli_connect_error() . "\n";
}
exit;
}
// ========== 环境切换说明 ==========
/**
* 开发环境 → 生产环境迁移清单:
*
* 1. 修改$hostname为RDS地址
* - 开发redcap-db
* - 生产rm-xxx.mysql.rds.aliyuncs.com
*
* 2. 修改$db数据库名
* - 开发redcap
* - 生产redcap_prod建议区分
*
* 3. 修改$username和$password
* - 必须使用强密码32+字符)
*
* 4. 设置生产环境Salt
* - 必须使用强随机值
* - 设置后永远不可更改
*
* 5. 关闭调试
* - $log_all_errors = FALSE
* - 删除配置验证代码
*
* 6. 配置SSL连接推荐
* - RDS提供SSL证书
* - 增强数据传输安全
*/