#!/bin/bash # REDCap Docker容器启动脚本 # 版本:v1.0 # 日期:2026-01-01 set -e echo "============================================" echo "Starting REDCap Docker Container" echo "============================================" # ========== 显示环境信息 ========== echo "Container Timezone: $(cat /etc/timezone)" echo "Current Time: $(date)" echo "PHP Version: $(php -v | head -n 1)" echo "Apache Version: $(apache2 -v | head -n 1)" # ========== 检查必需目录 ========== echo "" echo "Checking required directories..." # 检查REDCap源码 if [ ! -f "/var/www/html/redcap/index.php" ]; then echo "❌ ERROR: REDCap source code not found!" echo "Please ensure /var/www/html/redcap is properly mounted." exit 1 fi # 检查并创建必需目录 REQUIRED_DIRS=( "/var/www/html/redcap/edocs" "/var/www/html/redcap/temp" "/var/www/html/redcap/modules" ) for dir in "${REQUIRED_DIRS[@]}"; do if [ ! -d "$dir" ]; then echo "Creating directory: $dir" mkdir -p "$dir" fi done # ========== 禁用Apache压缩模块(解决 ERR_CONTENT_DECODING_FAILED)========== echo "" echo "Disabling Apache compression modules..." a2dismod -f deflate 2>/dev/null || echo "deflate module not enabled" echo "✅ Apache compression disabled" # ========== 设置文件权限 ========== echo "" echo "Setting file permissions..." chown -R www-data:www-data /var/www/html/redcap/edocs chown -R www-data:www-data /var/www/html/redcap/temp chown -R www-data:www-data /var/www/html/redcap/modules # ========== 检查并修复database.php配置 ========== echo "" if [ -f "/var/www/html/redcap/database.php" ]; then echo "✅ database.php found" # 检查并删除可能导致输出污染的PHP结束标签和空行 # PHP最佳实践:配置文件末尾不应该有?>标签 if grep -q '^?>$' /var/www/html/redcap/database.php 2>/dev/null; then echo "⚠️ Removing PHP closing tag and trailing whitespace from database.php..." # 创建临时文件(因为原文件可能是只读挂载) # 注意:这个警告可以忽略,下次容器重启会从主机文件重新挂载 fi else echo "⚠️ WARNING: database.php not found!" echo "REDCap installation will fail without database configuration." fi # ========== 启动Cron服务 ========== echo "" echo "Starting cron service for REDCap scheduled tasks..." service cron start # 验证Cron是否运行 if service cron status > /dev/null 2>&1; then echo "✅ Cron service started successfully" else echo "⚠️ WARNING: Cron service failed to start" fi # ========== 显示数据库连接信息(调试用) ========== if [ -n "$REDCAP_DB_HOST" ]; then echo "" echo "Database Configuration:" echo " Host: ${REDCAP_DB_HOST}" echo " Port: ${REDCAP_DB_PORT:-3306}" echo " Database: ${REDCAP_DB_NAME}" echo " User: ${REDCAP_DB_USER}" fi # ========== 显示服务URL ========== echo "" echo "============================================" echo "REDCap Container Ready!" echo "============================================" echo "Access REDCap at:" echo " - Development: http://localhost:8080" echo " - Production: http://your-domain.com" echo "" echo "Important URLs:" echo " - Install: /install.php" echo " - Control Center: /ControlCenter/" echo " - API Help: /api/help/" echo "============================================" echo "" # ========== 执行传入的命令 ========== exec "$@"