我在Azure下运行Joomla,数据库使用MySQL In-App选项。一切都很顺利,但我一直无法让JConfig中的数据库配置变量从MYSQLCONNSTR_localdb环境变量中动态提取。
我已经尝试了这里发布的MS建议的解决方案 https:/blogs.msdn.microsoft.comazureossds20161209mysql-in-app-configuration-for-php-content-management-systems。我们尝试了从环境变量中提取信息和设置变量的各种方法,但都没有成功。唯一可行的是硬编码主机地址,这......是有问题的。
一个例子可能是这样的。
class JConfig {
...
$hostVar = getenv("MYSQLCONNSTR_localdb");
$hostArray = array();
foreach( explode( ';', $hostVar ) as $substr )
{
$asplode = explode('=', $substr);
$hostArray[ $asplode[0] ] = $asplode[1];
}
public $host = $hostArray['Data Source'];
...
到目前为止,所有硬编码地址的变化都是 "Error." 在前端。
我把赋值移到了JConfig类的构造函数中。有了这个,我就能很好地实现docker化了。
class JConfig {
public $smtpuser;
public $smtppass;
public $smtphost;
public $host;
public $user;
public $password;
public $db;
function __construct() {
$this->smtpuser = getenv('SMTP_USER');
$this->smtppass = getenv('SMTP_PASSWORD');
$this->smtphost = getenv('SMTP_HOST');
$this->host = getenv('JOOMLA_DB_HOST');
$this->user = getenv('JOOMLA_DB_USER');
$this->password = getenv('JOOMLA_DB_PASSWORD');
$this->db = getenv('JOOMLA_DB_NAME');
}