我在修改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'));
1条答案
按热度按时间j2cgzkjk1#
显然有一个php配置(clear_env)必须在www.conf文件中设置,以便在从wp-config.php文件访问时保留env变量。添加到我的Dockerfile文件中就足够了: