我想配置一个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 = DotenvDotenv::create(__DIR__);
if(file_exists(".env")) {
$dotenv->load();
}
正确的方法是引用文件前面的正确路径。像这样:
$dotenv = DotenvDotenv::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文件所在的文件夹之外的某个地方。然后我可以安全地备份它们,而不会在备份中暴露数据库密码。