You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress wp-config.php用getenv读环境变量连接数据库失败

WordPress环境变量配置数据库参数失败问题

问题现象

硬编码数据库参数到wp-config.php可正常连接数据库,但通过系统环境变量读取参数时连接失败。

可正常运行的wp-config.php配置

define('DB_NAME',          'wordpress');
define('DB_USER',          'wordpress');
define('DB_PASSWORD',      'wordpress_psw');
define('DB_HOST',          'wp-db');

无法工作的wp-config.php配置

/** MySQL database password */
define( 'DB_PASSWORD', getenv('WORDPRESS_DATABASE_PASSWORD') );

error_log("DB_PASSWORD: ".getenv('WORDPRESS_DATABASE_PASSWORD'));

/** MySQL hostname */
define( 'DB_HOST', getenv('WORDPRESS_DATABASE_HOST') );

error_log("DB_HOST: ".getenv('WORDPRESS_DATABASE_HOST'));

define( 'DB_NAME', getenv('WORDPRESS_DATABASE_NAME') );

error_log("DB_NAME: ".getenv('WORDPRESS_DATABASE_NAME'));

Docker Compose配置

wp-db:
  image: docker.io/bitnami/mysql:8.0
  restart: unless-stopped
  volumes:
    - ./wordpress/db/data.sql:/docker-entrypoint-initdb.d/data.sql
  environment:
    - ALLOW_EMPTY_PASSWORD=yes
    - MYSQL_USER=wordpress
    - MYSQL_PASSWORD=wordpress_psw
    - MYSQL_DATABASE=wordpress
  ports:
    - "3306:3306"

wordpress:
  build:
    context: ./wordpress
  ports:
    - '8002:8080'
    - '8443:8443'
  depends_on:
    - wp-db
  volumes:
    - ./wordpress/wp_src_code:/bitnami/wordpress
  environment:
    WORDPRESS_DATABASE_HOST: 'wp-db'
    WORDPRESS_DATABASE_NAME: 'wordpress'
    WORDPRESS_DATABASE_PASSWORD: 'wordpress_psw'
    WORDPRESS_DATABASE_USER: 'wordpress'

日志排查信息

添加error_log输出环境变量值时,日志能正常打印出Docker Compose中配置的内容,但实际数据库连接时,getenv似乎返回空字符串或false,导致连接失败。

日志输出截图:
日志输出截图


解决建议

  1. 换用$_SERVER全局变量读取
    部分场景下getenv读取环境变量存在兼容性问题,可改用$_SERVER尝试:

    define('DB_HOST', $_SERVER['WORDPRESS_DATABASE_HOST'] ?? 'wp-db');
    define('DB_NAME', $_SERVER['WORDPRESS_DATABASE_NAME'] ?? 'wordpress');
    define('DB_PASSWORD', $_SERVER['WORDPRESS_DATABASE_PASSWORD'] ?? 'wordpress_psw');
    
  2. 检查PHP的variables_order配置
    确保PHP配置中variables_order包含E(环境变量),可在wp-config.php开头添加代码验证:

    phpinfo();
    exit;
    

    若输出中variables_order无E,需修改php.ini为variables_order = "EGPCS"。

  3. 利用Bitnami镜像原生配置逻辑
    Bitnami WordPress镜像默认支持通过环境变量自动生成wp-config.php,无需手动修改该文件。如果手动修改过配置,建议恢复默认文件,让镜像自动完成配置。

  4. 添加默认值兜底
    为避免环境变量读取失败导致服务崩溃,在定义参数时添加默认值:

    define('DB_HOST', getenv('WORDPRESS_DATABASE_HOST') ?: 'wp-db');
    

内容的提问来源于stack exchange,提问作者Aliy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:44:56