【发布时间】:2020-06-22 13:41:48
【问题描述】:
我已经使用 RDS 在 EC2(Amazon 2 Linux)上设置了一个 Wordpress 站点,它运行良好。我现在正在尝试使用 https://github.com/vlucas/phpdotenv 从 .env 文件加载环境变量。
- wp-config.php 位于 /var/www(从 html 根目录向上一级)
- 我在 /var/www/ 中运行了
composer require vlucas/phpdotenv,现在我有了 /var/www/vendor、composer .json 和 .lock 文件。
composer.json:
{
"require": {
"vlucas/phpdotenv": "^4.1"
}
}
我的 .env 文件如下(值已编辑):
DB_NAME=DBNAME
DB_USER=USERNAME
DB_PASS=PASSWORD
DB_HOST=HOSTNAME
我在 wp-config.php 的顶部添加了以下内容,但随后我得到了可怕的 Wordpress 白屏死机。
<?php
require_once(__DIR__ . '/vendor/autoload.php');
(new \Dotenv\Dotenv(__DIR__))->load();
我已经添加了我的环境变量,如下所示,但即使我恢复为手动输入,上面的代码也会显示白屏。
/** The name of the database for WordPress */
define( 'DB_NAME', getenv('DB_NAME'));
/** MySQL database username */
define( 'DB_USER', getenv('DB_USER'));
/** MySQL database password */
define( 'DB_PASSWORD', getenv('DB_PASS'));
/** MySQL hostname */
define( 'DB_HOST', getenv('DB_HOST'));
我做错了什么?
【问题讨论】:
-
Wordpress 自动加载和包管理不会让它那么容易发生。您可以尝试github.com/johnpbloch/wordpress-core-installer 之类的方法,其中 Composer 已经集成并可以与 Wordpress Core 一起使用。请参阅salferrarello.com/install-wordpress-with-composer 上的文章
-
好的,我通过添加 if(file_exists(DIR . '/../vendor/autoload.php')) 并将代码包装在那。现在它不会识别数据库设置。似乎 getenv('DB_NAME') 不起作用。我检查了 .env 文件是否正确。
-
只要
./vendor/autoload.php的相对路径正确,只需将require_once(__DIR__ . '/vendor/autoload.php');和(new \Dotenv\Dotenv(__DIR__))->load();添加到wp-config.php即可。要访问环境变量,您应该使用$_ENV['VARIABLE_NAME']而不是getenv('VARIABLE_NAME'),如github.com/vlucas/phpdotenv 的文档中所述。这对我来说非常适合 WordPress 5.8