连接数据库时出错:在wp-config.php中使用环境变量


Error Connecting Database: Using Environment Variables into wp-config.php

我想配置一个wordpress站点,我的wp配置应该从环境变量中获取数据库值。我已经设置了环境变量,但在此过程中显示"建立数据库连接时出错"。

这是我使用的代码

define('DB_NAME', getenv('DB'));
define('DB_USER', getenv('us'));
define('DB_PASSWORD', getenv('pa'));
define('DB_HOST', getenv('end'));

我也试过从终端运行,但错误是一样的。我不知道是什么导致了这个问题。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Database Error</title>
</head>
<body>
    <h1>Error establishing a database connection</h1>
</body>
</html>

他们错过了什么吗??

您为数据库用户名、密码和主机定义了相同的DB_NAME常量。更改常量

试试这个

define('DB_NAME', getenv('DB'));
define('DB_USER', getenv('us'));
define('DB_PASSWORD', getenv('pa'));
define('DB_HOST', getenv('end'));

或者您可以创建.htaccess文件SetEnv DB Abc;以及在php echo DB中;

我收到了同样的错误。我的wp-config.php好像在两个不同的地方被呼叫了两次。我引用.env文件的方式不正确。

如果你在wp-config.php:中做了类似的事情

$dotenv = Dotenv'Dotenv::create(__DIR__);
if(file_exists(".env")) {
    $dotenv->load();
}

正确的方法是引用文件前面的正确路径。像这样:

$dotenv = Dotenv'Dotenv::create(__DIR__);
if(file_exists($_SERVER['DOCUMENT_ROOT'] . '/' . '.env')) {
    $dotenv->load();
}

当我调用这样的环境变量时,这最终解决了我的问题:

define( 'DB_HOST', getenv('DB_HOST') );

您还可以使用php.ini文件设置变量。在一些共享主机(如uberspace)中,您有一个特殊的php.d文件夹,其中包含自定义ini文件。

这就是wordpress.ini文件的样子:

WP_DB_NAME=example
...

这就是你在wp-config.php:中访问它的方式

...
define( 'DB_NAME', get_cfg_var('WP_DB_NAME') );
...

确保重新加载php配置。这对你的提供商来说有点特别,我也可以想象他们每5分钟左右重新加载一次

uberspace tools restart php

遗憾的是,并不是所有的托管提供商都能给你那么多自由。然而,这对我来说是一个很好的方式,可以将配置放在我所有wordpress文件所在的文件夹之外的某个地方。然后我可以安全地备份它们,而不会在备份中暴露数据库密码。