Wordpress wp-config.php get_env issue中连接到数据库时出错

yizd12fk  于 2023-05-21  发布在  PHP
关注(0)|答案(1)|浏览(143)

我在修改WordPress的wp-config.php文件时遇到了一个非常奇怪的问题(至少对我来说),特别是通过从系统级环境变量加载值来设置DB_HOST,DB_NAME,DB_PASSWORD等。

目前在wp-config.php中- this工作

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

但这并不

/** 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'));

我不知道为什么用getenv定义这些配置不起作用。
我有这个docker-compose.yml

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'

UPDATE每当我尝试记录从getenv value获得的值时,它会按照docker-compose.yaml中的定义记录4次,但是当它实际使用并运行getenv值时,我认为返回空字符串或false。

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

j2cgzkjk

j2cgzkjk1#

显然有一个php配置(clear_env)必须在www.conf文件中设置,以便在从wp-config.php文件访问时保留env变量。添加到我的Dockerfile文件中就足够了:

RUN echo 'clear_env = no' >> /opt/bitnami/php/etc/php-fpm.d/www.conf

相关问题